QT添加#include “winuser.h“报错

本文讲述了开发者在使用QtCreator时,遇到窗口置顶时短暂闪现的问题,通过引入winapi并调整头文件顺序解决了这个问题,强调了不同API之间的配合和头文件的正确使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用qtcreator进行开发,想使用api进行窗口置顶时候

发现使用setWindowFlag(Qt::WindowStaysOnTopHint,true);会闪一下,查了一下别人的博客说是源码里面有一个hide(),鉴于咱水平不够,就去找了winapi的接口。

在window下添加winuser.h前需要先把window.h放到它的前面。

首先,我们需要在MessageBox弹窗中添加一个按钮,用于触发下一页的更新操作。由于MessageBox函数本身是一个阻塞函数,无法进行更新操作,因此我们需要使用自定义的窗口来实现弹窗。 下面是一个简单的实现思路: 1. 定义一个全局变量来记录当前弹窗的页数。 ``` int page = 1; ``` 2. 创建一个自定义的窗口,用于显示弹窗内容。在窗口中添加一个按钮,用于触发下一页的更新操作。 ``` void MyWindow() { static int buttonPressed = 0; ImGui::Begin("My Popup"); ImGui::Text("Page %d", page); if (ImGui::Button("Next Page")) { page++; buttonPressed = 1; } ImGui::End(); if (buttonPressed) { buttonPressed = 0; MessageBox(NULL, "Popup updated!", "Info", MB_OK); } } ``` 3. 在程序中调用MessageBox函数,并将其父窗口设置为自定义的窗口。 ``` int main() { int ret = MessageBox(NULL, "Click 'OK' to open popup.", "Info", MB_OKCANCEL); if (ret == IDOK) { HWND hwnd = (HWND)ImGui::GetMainViewport()->PlatformHandle; int result = (int)DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(1), hwnd, NULL); } return 0; } ``` 4. 定义对话框过程函数,在其中创建自定义窗口并显示。 ``` INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: ImGui_ImplWin32_Init(hwndDlg); break; case WM_COMMAND: if (LOWORD(wParam) == IDOK) { EndDialog(hwndDlg, 0); return TRUE; } break; case WM_PAINT: ImGui_ImplWin32_NewFrame(); MyWindow(); ImGui::Render(); ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData()); break; case WM_CLOSE: EndDialog(hwndDlg, 0); break; default: return FALSE; } return TRUE; } ``` 在上述代码中,我们使用了ImGui库来创建自定义窗口,并在其中添加了一个按钮用于触发下一页的更新操作。在按钮被点击时,我们将buttonPressed变量设置为1,在消息循环中检测到该变量有变化后,调用MessageBox函数更新弹窗内容。 需要注意的是,由于MessageBox函数是一个阻塞函数,我们需要在程序中使用对话框来实现自定义窗口,并在其中显示弹窗内容。同时,我们需要在程序中调用ImGui_ImplWin32_Init函数来初始化ImGui库,并在消息循环中调用MyWindow函数来显示自定义窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值