我已经重写了窗口的非客户区,在窗口的回调函数中,如下所示:
case WM_NCPAINT:
{
HDC hdc;
RECT rect;
HPEN pen;
hdc=GetDCEx(hWnd,(HRGN)wParam,DCX_WINDOW|DCX_CACHE|DCX_INTERSECTRGN|DCX_LOCKWINDOWUPDATE);
GetWindowRect(hWnd,&rect);
pen=CreatePen(PS_SOLID, 10, RGB(255, 0, 0));//red pen 10 pixels in size
SelectObject(hdc,pen);
Rectangle(hdc,0,0,(rect.right-rect.left),(rect.bottom-rect.top));
DeleteObject(pen);
ReleaseDC(hWnd,hdc);
RedrawWindow(hWnd,&rect,(HRGN)wParam,RDW_UPDATENOW)
}break;
那就可以了,以上代码可以在窗口周围画一个红色矩形。但是,如果窗口失去焦点,则会绘制默认的非客户区域,并且我的自定义非客户区域绘图会消失。
我尝试在窗口的回调函数中捕获 WM_KILLFOCUS 消息,并像处理 WM_NCPAINT 一样处理它,但什么也没发生(虽然我看到当我按另一个窗口时,我收到此消息并且我的窗口失去焦点)。
我错过了什么?