我想更改窗口标题栏的外观,因此我决定覆盖OnNcPaint()
的{{1}}方法。但是当我这样做时,我发现了一个问题。如果我的窗口上有另一个窗口,我快速拖动窗口,窗口客户区的内容就消失了,只有在我停止拖动时才能看到。
我被覆盖的CMainFrame
如下所示:
OnNcPaint()
我的方法有问题吗? 谢谢!
答案 0 :(得分:4)
除非您使用设置的剪辑区域来排除客户区域,否则可以 从OnNcPaint()
绘制它。所以......如果你的绘图逻辑不能修改为以其他方式排除客户端,请先设置一个合适的剪贴区域:
CRect rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
CRect rectClient;
GetClientRect(&rectClient);
rectClient.OffsetRect(-rect.left, -rect.top);
rect.OffsetRect(-rect.left, -rect.top);
pWinDC->ExcludeClipRect(&rectClient);
// ...
// draw stuff here
// ...
pWinDC->SelectClipRgn(NULL);