CreateWindowEx 在 Windows 10 上创建旧的 (Windows 7) 样式边框

CreateWindowEx creates old (Windows 7) style border on Windows 10

每当我用 CreateWindowEx(...) 创建一个 window 时(确切的参数可以在下面的代码中找到),它显示为旧样式 window:

只有当我在远程桌面上启动它,关闭连接并重新连接时,它才会更改为所需的 Windows 10 样式:

这与应用程序在执行此操作时收到的几条 WM_SETTINGCHANGE 消息有关吗?

显然,我希望 window 在创建时具有现代风格,而不是在处理一些消息之后。

我尝试了 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);
}

奇怪的是,解决方案似乎是从样式标志中删除 WS_VISIBLE,并手动显示 window:

if (handle != NULL)
{
    ... // resizing the window's contents
    ShowWindow(handle, 1); /* Add this */
    UpdateWindow(handle);
}

我 100% 确定我已经尝试过了,但突然就奏效了。随便...