实际上,这样做可以解决问题:
SetWindowPos(hwnd, 0, 0, 0, 0, 0,
SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|SWP_NOZORDER);
Run Code Online (Sandbox Code Playgroud)
覆盖非客户区总是充满危险。窗口管理器似乎对优化做了很多假设。显然可以做到,请参阅 Office,但可能需要进行大量实验。
只是一个想法。调用 RedrawWindow 两次,一次使非客户区无效,然后再次使客户区无效。
RedrawWindow(hwnd, NULL, NULL, RDW_FRAME | RDW_INVALIDATE);
RedrawWindow(hwnd, NULL, NULL, RDW_NOFRAME | RDW_VALIDATE);
Run Code Online (Sandbox Code Playgroud)
另一个想法是尝试立即绘制框架,而不会使任何内容无效:
RedrawWindow(hwnd, NULL, NULL, RDW_FRAME | RDW_UPDATENOW | RDW_NOCHILDREN);
Run Code Online (Sandbox Code Playgroud)
另一个想法是在第二个或第三个参数中指定一个空的 RECT 或 HREGION。它可能不会以这种方式使客户区无效。