21xrx.com
2024-11-05 22:01:41 Tuesday
登录
文章检索 我的文章 写文章
C++如何创建窗口
2023-07-01 13:14:50 深夜i     --     --
C++ 创建窗口 GUI编程 消息循环 窗口过程

要使用C++创建窗口,我们需要使用Windows API。通过这个API,开发人员可以访问各种Windows操作系统的功能,包括创建窗口、处理输入事件、渲染图形等。

下面是一个简单的示例代码,演示如何在C++中创建一个基本窗口。在这个示例中,我们使用了WinMain()函数来初始化应用程序,并在其中创建了一个名为"BasicWindow"的窗口。


#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

{

  // 定义一个窗口类

  WNDCLASS wc{};

  wc.lpfnWndProc = WindowProc;

  wc.hInstance = hInstance;

  wc.lpszClassName = L"BasicWindow";

  wc.hCursor = LoadCursor(nullptr, IDC_ARROW);

  wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

  // 注册窗口类

  RegisterClass(&wc);

  // 创建窗口

  HWND hwnd = CreateWindow(

    L"BasicWindow",

    L"C++ Basic Window",

    WS_OVERLAPPEDWINDOW,

    CW_USEDEFAULT,

    CW_USEDEFAULT,

    800,

    600,

    nullptr,

    nullptr,

    hInstance,

    nullptr);

  // 显示窗口

  ShowWindow(hwnd, nShowCmd);

  // 进入消息循环

  MSG msg{};

  while (GetMessage(&msg, nullptr, 0, 0))

  {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

  }

  // 注销窗口类

  UnregisterClass(L"BasicWindow", hInstance);

  return static_cast<int>(msg.wParam);

}

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

  switch (uMsg)

  {

  case WM_DESTROY:

    PostQuitMessage(0);

    break;

  default:

    return DefWindowProc(hwnd, uMsg, wParam, lParam);

  }

  return 0;

}

在这个示例中,我们首先定义了一个名为"BasicWindow"的窗口类,并注册该窗口类。然后,通过CreateWindow()函数创建了一个名为"C++ Basic Window"的窗口,并显示出来。最后,我们进入一个消息循环,等待窗口事件的发生,并及时对这些事件进行处理。

需要注意的是,通过这个示例,我们只是创建了一个非常简单的窗口。实际情况下,我们需要根据具体的应用场景,添加更多的控件和功能,才能创建一个完整的窗口应用程序。

  
  

评论区

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