用C++写弹窗,没有按键
时间: 2024-10-13 11:16:09 浏览: 24
Qt自定义弹窗,可阻塞,可以点击确定和取消并且两个按键可以做不同操作,界面可根据需求修改
5星 · 资源好评率100%
在C++中创建一个简单的非模态窗口(即不等待用户按键关闭的窗口),可以使用Windows API函数CreateWindowEx或使用一些库如Qt、wxWidgets等。这里提供一个基本的例子,使用CreateWindowEx函数:
```cpp
#include <windows.h>
#include <atlbase.h> // 包含了COM初始化所需的头文件
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_DESTROY:
PostQuitMessage(0); // 结束消息循环
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
int main() {
// 初始化窗口类
WNDCLASSEX wc = {0};
wc.lpfnWndProc = WndProc;
wc.lpszClassName = L"MyWindowClass";
wc.hInstance = GetModuleHandle(NULL);
wc.style = CS_HREDRAW | CS_VREDRAW; // 设置红绿蓝刷
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // 使用默认箭头光标
RegisterClassEx(&wc);
// 创建窗口
HWND hWnd = CreateWindowEx(
WS_EX_OVERLAPPEDWINDOW, // 使用标准窗口样式
L"MyWindowClass", // 窗口类名
L"Non-modal Popup Window", // 标题
WS_POPUP, // 没有边框,也不接受焦点
CW_USEDEFAULT, // x坐标
CW_USEDEFAULT, // y坐标
640, // 宽度
480, // 高度
NULL, // 父窗口
NULL, // 参数
GetModuleHandle(NULL), // 应用实例句柄
NULL // 窗口创建结构体指针
);
if (!hWnd) {
std::cerr << "Failed to create window!" << std::endl;
return -1;
}
ShowWindow(hWnd, SW_SHOW); // 显示窗口
UpdateWindow(hWnd); // 更新窗口显示
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass(L"MyWindowClass", GetModuleHandle(NULL)); // 注销窗口类
return 0;
}
```
在这个例子中,窗口会一直存在,直到程序结束。如果你不需要这个窗口一直保持打开,可以在`WM_DESTROY`消息处理中添加相应的关闭逻辑。
阅读全文