(我的英语可能很奇怪o_o)
我使用MFC选项卡式MDI,无文档/视图
我删除自动生成的View类,并使用CSplitterWnd
和我自己的View Class
“我自己的View Class”有两个子节点:编辑控件和我的自定义控件
(编辑:我创建了新的选项卡式MDI,无文档/查看MFC项目并通过间谍++测试了该项目。再次出现以下问题!)
(编辑:使用文档/视图:再次!)
在我写这个程序的时候,我发现了一个奇怪的问题:
当我通过单击Aero Peek Thumbnail验证窗口时,我的自定义控件被绘制了很多次(WM_PAINT被多次发送)
我在WM_PAINT中找到CMDIFrameWndEx::OnAfterTaskbarActivate
函数调用RedrawWindow
,OnAfterTaskbarActivate多次调用(31次,是的)
你能告诉我是什么原因导致这个问题以及如何解决?
答案 0 :(得分:1)
我遇到了同样的问题。我的解决方案是覆盖OnAfterTaskbarActivate
将此添加到您的MessageMap
ON_REGISTERED_MESSAGE(AFX_WM_AFTER_TASKBAR_ACTIVATE, OnAfterTaskbarActivate)
功能如下。请注意,这与没有重绘的原始功能完全相同。
LRESULT CMainFrame::OnAfterTaskbarActivate(WPARAM, LPARAM lp)
{
HWND hwndMDIChild = (HWND)lp;
if (hwndMDIChild != NULL && ::IsWindow(hwndMDIChild))
{
::SetFocus(hwndMDIChild);
}
return 0;
}
我希望这会有所帮助。它解决了我的问题。