Windows图形界面(GUI)-DLG-C/C++ - 图形界面程序结构

目录

Windows图形界面程序结构

Windows 程序结构

窗口类和窗口过程函数

创建和显示窗口

消息循环和消息处理机制


Windows图形界面程序结构

Windows 程序结构

  • WinMain 函数
  • WinMain 函数是 Windows 应用程序的入口点。它的原型如下:
  • int WINAPI WinMain(
        HINSTANCE hInstance,      // 当前应用程序实例的句柄
        HINSTANCE hPrevInstance,  // 以前的应用程序实例的句柄 (总是为 NULL)
        LPSTR lpCmdLine,          // 命令行参数
        int nCmdShow              // 显示窗口的方式
    );
    
  • hInstance:当前应用程序实例的句柄。Windows 使用句柄来标识应用程序。
  • hPrevInstance:以前的应用程序实例的句柄。在 32 位 Windows 程序中,总是为 NULL。
  • lpCmdLine:传递给程序的命令行参数。
  • nCmdShow:指示窗口如何显示的标志。
窗口类和窗口过程函数

  • 窗口类定义了窗口的属性,例如背景颜色、窗口过程函数等。窗口过程函数处理窗口的消息。
  • 注册窗口类
  • WNDCLASSEX wc;
    ZeroMemory(&wc, sizeof(WNDCLASSEX));
    
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wc.lpszClassName = "WindowClass";
    
    RegisterClassEx(&wc);
    
  • 窗口过程函数
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
创建和显示窗口

  • 创建窗口需要调用 CreateWindowEx 函数,并显示和更新窗口。
HWND hwnd = CreateWindowEx(
    0,
    "WindowClass",
    "Window Title",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT,
    500, 500,
    NULL,
    NULL,
    hInstance,
    NULL
);

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
消息循环和消息处理机制
  • 消息循环(Message Loop)
    • 消息循环用于捕获和分发消息。
    • MSG msg;
      while (GetMessage(&msg, NULL, 0, 0))
      {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
      }
  • 消息处理机制(Message Handling)
    • ​​​​​​​​​​​​​​窗口过程函数处理窗口的各种消息,例如绘制、键盘输入、鼠标点击等。
    • LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
      {
          switch (uMsg)
          {
          case WM_DESTROY:
              PostQuitMessage(0);
              return 0;
          default:
              return DefWindowProc(hwnd, uMsg, wParam, lParam);
          }
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值