21xrx.com
2024-12-22 21:07:29 Sunday
登录
文章检索 我的文章 写文章
C++窗口编程代码
2023-06-29 14:15:03 深夜i     --     --
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窗口应用程序,并添加控件和其他功能,以实现各种需求。

  
  

评论区

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