21xrx.com
2025-04-08 22:58:49 Tuesday
文章检索 我的文章 写文章
C++创建窗口
2023-07-04 07:27:19 深夜i     13     0
C++ 创建 窗口 GUI WinAPI

C++是一种高级编程语言,其运用广泛,尤其在游戏开发领域可谓是不可或缺的工具。在开发游戏时,如何创建一个窗口显得尤为重要,因为它是游戏界面的基础。

在C++中,我们可以使用Windows API来创建窗口。Windows API是Microsoft Windows系统提供的一套应用程序接口(API),可以帮助开发者方便地与Windows系统进行交互。

下面是一个简单的C++函数,可以用来创建一个基础的窗口:

#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
  static TCHAR szAppName[] = TEXT("Simple Window");
  HWND hwnd;
  MSG msg;
  WNDCLASS wndclass;
  wndclass.style = CS_HREDRAW | CS_VREDRAW;
  wndclass.lpfnWndProc = WndProc;
  wndclass.cbClsExtra = 0;
  wndclass.cbWndExtra = 0;
  wndclass.hInstance = hInstance;
  wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
  wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
  wndclass.lpszMenuName = NULL;
  wndclass.lpszClassName = szAppName;
  if (!RegisterClass(&wndclass))
  {
    MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
    return 0;
  }
  hwnd = CreateWindow(szAppName, TEXT("Simple Window"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
  ShowWindow(hwnd, iCmdShow);
  UpdateWindow(hwnd);
  while (GetMessage(&msg, NULL, 0, 0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  HDC hdc;
  PAINTSTRUCT ps;
  RECT rect;
  switch (message)
  {
  case WM_PAINT:
    hdc = BeginPaint(hwnd, &ps);
    GetClientRect(hwnd, &rect);
    DrawText(hdc, TEXT("Hello, Windows!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
    EndPaint(hwnd, &ps);
    return 0;
  case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
  }
  return DefWindowProc(hwnd, message, wParam, lParam);
}

这个函数可以创建一个基础的白色窗口,并在其中心位置显示“Hello, Windows!”的文本。其中,`WinMain`是程序的入口函数,`WndProc`是窗口消息处理函数。

通过这个例子,我们可以看到,在C++中创建窗口是一件非常简单的事情。当然,在实际的游戏开发中,我们一般会更加复杂地使用Windows API来实现各种各样的窗口和界面效果,以创造出更加丰富多彩的游戏体验。

  
  

评论区