MFC选项卡式MDI:太多OnAfterTaskbarActivate()

时间:2013-12-05 08:50:19

标签: mfc

(我的英语可能很奇怪o_o)

我使用MFC选项卡式MDI,无文档/视图

我删除自动生成的View类,并使用CSplitterWnd和我自己的View Class

“我自己的View Class”有两个子节点:编辑控件和我的自定义控件

(编辑:我创建了新的选项卡式MDI,无文档/查看MFC项目并通过间谍++测试了该项目。再次出现以下问题!)
(编辑:使用文档/视图:再次!)

在我写这个程序的时候,我发现了一个奇怪的问题:

当我通过单击Aero Peek Thumbnail验证窗口时,我的自定义控件被绘制了很多次(WM_PAINT被多次发送)

我在WM_PAINT中找到CMDIFrameWndEx::OnAfterTaskbarActivate函数调用RedrawWindow,OnAfterTaskbarActivate多次调用(31次,是的)

你能告诉我是什么原因导致这个问题以及如何解决?

1 个答案:

答案 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;
    }

我希望这会有所帮助。它解决了我的问题。