21xrx.com
2024-11-25 05:11:16 Monday
登录
文章检索 我的文章 写文章
C++ 简单窗口代码实例
2023-07-07 10:37:52 深夜i     --     --
C++编程 窗口程序 程序实例 GUI设计 界面开发

C++作为一门广泛使用的编程语言,常被用于开发桌面应用。窗口程序是C++实现桌面应用的重要一环,本文将介绍C++实现简单窗口的代码实例。

使用C++实现窗口通常需要借助于Windows API(应用程序接口)库。Windows API提供了许多函数、结构体和常量,用于操作窗口、消息队列、用户界面等。

我们先来看一下一个最简单的窗口程序:


#include <windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

  const char CLASS_NAME[] = "Sample Window Class";

  

  WNDCLASS wc = { };

  wc.lpfnWndProc = WndProc;

  wc.hInstance = hInstance;

  wc.lpszClassName = CLASS_NAME;

  wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

  

  if (!RegisterClass(&wc)) {

    MessageBox(NULL, "Window Registration Failed!", "Error", MB_ICONEXCLAMATION | MB_OK);

    return 0;

  }

  

  HWND hWnd = CreateWindowEx(

    0,               // optional window styles

    CLASS_NAME,           // window class

    "Sample Window",        // window title

    WS_OVERLAPPEDWINDOW,      // window style

    // size and position

    CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,

    NULL,    // parent window  

    NULL,    // menu

    hInstance, // instance handle

    NULL    // additional application data

  );

  if (hWnd == NULL) {

    MessageBox(NULL, "Window Creation Failed!", "Error", MB_ICONEXCLAMATION | MB_OK);

    return 0;

  }

  ShowWindow(hWnd, nCmdShow);

  MSG msg = { };

  while (GetMessage(&msg, NULL, 0, 0)) {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

  }

  return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {

  switch (msg) {

    case WM_DESTROY:

      PostQuitMessage(0);

      break;

    

    default:

      return DefWindowProc(hWnd, msg, wParam, lParam);

  }

  return 0;

}

这个程序只是创建了一个窗口,窗口的标题为“Sample Window”,大小为400x300。其中RegisterClass函数注册了一个窗口类,在创建窗口时指定使用该窗口类。

WndProc是一个回调函数,当窗口接收到消息时,Windows自动调用该函数对消息进行处理。在这个程序中,只处理了窗口销毁消息WM_DESTROY,当接收到该消息时,程序结束并退出。

以上代码仅仅是一个简单的窗口程序,但对于刚开始入门C++窗口编程的开发者来说,是一个很好的学习例子。在实际开发中,我们还需要实现更复杂的用户交互、视图布局和功能模块等。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复