Всякий раз, когда я создаю окно с 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);
}