我想在C中创建一个Windows API应用程序,它将菜单和标题按钮呈现在同一个非客户区域,类似于Firefox

为了做到这一点,我已经确定解决方案需要:
该解决方案需要在Windows 7,8和10(以及理想的未来版本)上运行.
在我的应用程序中,我已经覆盖了适当的事件:
WM_NCCALCSIZE,WM_NCHITTEST,WM_NCLBUTTONDOWN,WM_NCLBUTTONUP,WM_NCMOUSEMOVE,WM_NCPAINT
然后我重新绘制这些事件非客户端领域:
WM_NCACTIVATE,WM_SETTEXT
这是我如何进行渲染的示例:
// globals set elsewhere
RECT customAreaRect, minRect, maxRect, closeRect, coverMenuRect;
BOOL maximized;
// ...
LRESULT OnPaintNCA(HWND hWnd, WPARAM wParam, LPARAM lParam) {
RECT windowRect;
HRGN hRgn = NULL;
GetWindowRect(hWnd, &windowRect);
if (wParam == 1) {
hRgn = CreateRectRgnIndirect(&windowRect);
} else {
hRgn = (HRGN)wParam;
}
if (hRgn) {
// Carve out …Run Code Online (Sandbox Code Playgroud)