在编写C++程序时,怎样新建一个窗口并让代码执行的结果都在该窗口内实现?
时间: 2024-02-12 13:02:35 浏览: 19
在 C++ 中,可以使用图形界面库来创建窗口并在窗口内显示结果。常用的图形界面库有:Windows API、Qt、MFC、wxWidgets 等。
以 Windows API 为例,以下是一个简单的示例代码,可以实现在窗口内显示 "Hello World!" 的功能:
```
#include <windows.h>
// 窗口过程函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0); // 退出程序
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// 在窗口内显示 "Hello World!"
TextOut(hdc, 10, 10, "Hello World!", strlen("Hello World!"));
EndPaint(hwnd, &ps);
}
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "MyWindowClass";
RegisterClass(&wc);
// 创建窗口
HWND hwnd = CreateWindow("MyWindowClass", "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL, NULL, hInstance, NULL);
// 显示窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
```
在上面的代码中,`WndProc` 函数是窗口过程函数,用于处理窗口消息。`WinMain` 函数是程序入口函数,其中注册窗口类、创建窗口、显示窗口等操作都在这里完成。在窗口内显示内容的代码在 `WM_PAINT` 消息处理中实现。