每当我使用CreateWindowEx(...)
(可以在下面的代码中找到确切的参数)创建一个窗口时,它就会像旧式窗口一样显示:
只有当我在远程桌面上启动它,关闭连接并重新连接时,它才会更改为所需的 Windows 10 样式:
它与WM_SETTINGCHANGE
应用程序在执行此操作时收到的几条消息有关吗?
显然,我希望窗口在创建时具有现代风格,而不是在处理一些消息之后。
我尝试了WS_...
风格参数的不同组合。奇怪的是,该应用程序只可靠地显示为WS_OVERLAPPEDWINDOW | WS_VISIBLE
.
我已经尝试过ShowWindow
(有各种论点)并且UpdateWindow
在两个命令中。
我也尝试过弄乱目标平台和工具集,但无济于事(使用 VS2015、v140)。
代码片段:
WNDCLASSEX wc = {sizeof(WNDCLASSEX), NULL, WindowController::globalEventProcessor,
0L, 0L, GetModuleHandle(NULL), NULL,
LoadCursor(NULL, IDC_ARROW), NULL, NULL,
_T("Window"), NULL};
RegisterClassEx(&wc);
HWND handle = CreateWindowEx(
NULL,
wc.lpszClassName,
_T("Test"),
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
parentWindow ? parentWindow->getHandle() : NULL,
NULL,
wc.hInstance,
reinterpret_cast<LPVOID>(this)
);
if (handle != NULL)
{
... // resizing the window's contents
UpdateWindow(handle);
}