欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > Windows图形界面(GUI)-DLG-C/C++ - 图形界面程序结构

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

2024/10/24 4:43:58 来源:https://blog.csdn.net/2301_80612536/article/details/140418323  浏览:    关键词: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);}
      }

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com