在Windows中单独创建一个窗口

时间:2013-03-27 14:11:17

标签: windows qt

给定一个从QMainWindow继承的窗口,如何在Windows中单独创建它? 我有一个想法,检索它的窗口句柄,但我不知道如何做到这一点。无论如何,如果有一个Qt原生的(组合)方法,我们将不胜感激 提前谢谢。
编辑:
我试过了代码

HWND hWnd = (HWND)this->winId(); // the handle
unsigned old_styles = WS_OVERLAPPEDWINDOW & (~WS_THICKFRAME) | WS_VISIBLE;
SetWindowLongPtr(hWnd, GCL_STYLE, old_styles);
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE   
| SWP_NOZORDER | SWP_FRAMECHANGED);
UpdateWindow(hWnd);

虽然窗口句柄是正确的,但它不起作用。

1 个答案:

答案 0 :(得分:1)

为您想要访问的每个窗口小部件设置Qt :: WA_NativeWindow属性,或调用其QWidget :: winId()方法,该方法将返回句柄(并在执行此操作之前创建它)。

HWND hWidget = (HWND)pWidget->winId();

获取句柄,您可以更改/设置此窗口的任何标志,不是吗? 据我所知,WS_BORDER标志是负责它的人:

WS_BORDER 0x00800000L The window has a thin-line border.