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);
          }
      }

相关推荐

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

    2024-07-15 05:08:02       26 阅读
  2. Windows图形界面(GUI)-SDK-C/C++ - 应用程序结构

    2024-07-15 05:08:02       29 阅读
  3. Windows图形界面(GUI)-DLG-C/C++ - 树形视图(TreeView)

    2024-07-15 05:08:02       22 阅读
  4. Windows图形界面(GUI)-DLG-C/C++ - 状态栏(StatusBar)

    2024-07-15 05:08:02       21 阅读
  5. Windows图形界面(GUI)-DLG-C/C++ - 列表视图(ListView)

    2024-07-15 05:08:02       19 阅读
  6. Windows图形界面(GUI)-DLG-C/C++ - 滑动条(Trackbar)

    2024-07-15 05:08:02       17 阅读
  7. GUI图形界面编程)

    2024-07-15 05:08:02       27 阅读
  8. Windows图形界面(GUI)-DLG-C/C++ - 对话框的创建实现

    2024-07-15 05:08:02       16 阅读
  9. Windows图形界面(GUI)-DLG-C/C++ - 静态控件(Static)

    2024-07-15 05:08:02       21 阅读
  10. Windows图形界面(GUI)-DLG-C/C++ - 月历控件(MonthCalendar)

    2024-07-15 05:08:02       17 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 05:08:02       51 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 05:08:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 05:08:02       44 阅读
  4. Python语言-面向对象

    2024-07-15 05:08:02       55 阅读

热门阅读

  1. 自学黑客

    2024-07-15 05:08:02       18 阅读
  2. 归并排序(递归实现)

    2024-07-15 05:08:02       22 阅读
  3. SpinalHDL之VHDL 和 Verilog 生成

    2024-07-15 05:08:02       20 阅读
  4. 等保测评助力网络安全治理现代化

    2024-07-15 05:08:02       16 阅读
  5. 去中心化预言机是什么

    2024-07-15 05:08:02       27 阅读
  6. Electron 进程间通信

    2024-07-15 05:08:02       21 阅读
  7. Windows 快捷键汇总

    2024-07-15 05:08:02       26 阅读
  8. HTTP 协议格式与 Fiddler 工具的用法

    2024-07-15 05:08:02       22 阅读
  9. 深入解析PHP框架:Symfony框架详解与应用

    2024-07-15 05:08:02       20 阅读
  10. UniApp:跨平台移动应用开发的终极指南

    2024-07-15 05:08:02       22 阅读