2008-09-08 66 views
2

在我的应用程序中,我有一个窗口,弹出一个小消息(与tooltip类似)。此窗口使用分层属性绘制alpha背景等。如何在MFC中创建非交互式窗口

如果我有几个这样的窗口一次打开,并且用鼠标单击它们,当它们消失时,它们会导致我的应用程序失去焦点(它将焦点切换到当前应用程序背后的应用程序)。

如何在我的窗口中停止任何交互?

回答

1

有没有运气的WM_NCACTIVATE消息播放后,我推翻了WM_SETFOCUS消息:

void CMyWindow::OnSetFocus(CWnd* pOldWnd) 
{ 
    if (pOldWnd != NULL) 
    { 
     pOldWnd->SetFocus(); 
    } 
} 

这似乎这样的伎俩。不知道它为什么起作用!对此问题的评论表示欢迎。

1

它可以工作,因为OnSetFocus(与许多On *方法一样)为您提供了一个在实际发生之前抢先执行某个操作的机会。焦点永远不会切换到您的非交互式窗口。