21xrx.com
2025-04-12 00:28:13 Saturday
文章检索 我的文章 写文章
C++窗口编程代码
2023-06-25 06:00:01 深夜i     10     0
C++ 窗口编程 代码 GUI MFC

C++是一门功能强大的编程语言,可以用于开发多种类型的应用程序,其中包括Windows应用程序。在本文中,我们将介绍如何使用C++编写Windows窗口应用程序。

Windows窗口应用程序通常包括一个或多个窗口和一个消息循环,以处理用户输入和操作系统消息。这些窗口可以是具有各种控件的标准窗口,如按钮、文本框和列表框,或自定义窗口。

下面是一个简单的Windows窗口应用程序代码示例,该示例创建一个带有一个按钮的窗口:

#include <Windows.h>
const char g_szClassName[] = "myWindowClass";
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch (msg)
  {
  case WM_CLOSE:
    DestroyWindow(hwnd);
    break;
  case WM_DESTROY:
    PostQuitMessage(0);
    break;
  default:
    return DefWindowProc(hwnd, msg, wParam, lParam);
  }
  return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  WNDCLASSEX wc;
  HWND hwnd;
  MSG Msg;
  // Step 1: Registering the Window Class
  wc.cbSize = sizeof(WNDCLASSEX);
  wc.style = 0;
  wc.lpfnWndProc = WndProc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hInstance = hInstance;
  wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  wc.lpszMenuName = NULL;
  wc.lpszClassName = g_szClassName;
  wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  if (!RegisterClassEx(&wc))
  {
    MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
    return 0;
  }
  // Step 2: Creating the Window
  hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "My First Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
    NULL, NULL, hInstance, NULL);
  if (hwnd == NULL)
  {
    MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
    return 0;
  }
  // Step 3: Displaying the Window
  ShowWindow(hwnd, nCmdShow);
  UpdateWindow(hwnd);
  // Step 4: Entering the Message Loop
  while (GetMessage(&Msg, NULL, 0, 0) > 0)
  {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
  }
  return Msg.wParam;
}

上面的代码包含四个步骤:

1. 注册窗口类

这个步骤说明了窗口需要的属性,包括窗口过程函数名称,窗口的样式和类名称。我们使用RegisterClassEx()函数来注册窗口类。

2. 创建窗口

这个步骤通过调用CreateWindowEx()函数创建窗口。

3. 显示窗口

这个步骤通过调用ShowWindow()和UpdateWindow()函数来显示窗口。

4. 消息循环

这个步骤通过调用GetMessage()、TranslateMessage()和DispatchMessage()函数来处理各种类型的消息,包括处理用户输入和操作系统消息。

对于上述代码,我们可以添加一个按钮控件来演示添加控件到窗口的方法。需要在WndProc()函数中添加以下代码:

case WM_CREATE:
{
  // Create a button
  HWND hButton = CreateWindowEx(0, "BUTTON", "Click Me", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 10, 10, 100, 24, hWnd, (HMENU)IDC_BUTTON, hInst, NULL);
  if (hButton == NULL)
  {
    MessageBox(hWnd, "Button Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
  }
}
break;
case WM_COMMAND:
  switch (LOWORD(wParam))
  {
  case IDC_BUTTON:
    MessageBox(hWnd, "Button Clicked!", "Success!", MB_ICONINFORMATION | MB_OK);
    break;
  }
  break;

上面的代码实现了在窗口的创建过程中添加了一个按钮,并在单击按钮时显示一条消息。

总的来说,C++是一门功能强大的编程语言,可以用于开发多种类型的应用程序,包括Windows窗口应用程序。有了上述示例代码,我们可以使用C++编写Windows窗口应用程序,并添加控件和其他功能,以实现各种需求。

  
  

评论区

请求出错了