本来想用如下的代码实现在切换到其他程序时 隐藏几个浮动窗口 但发现不稳定 时好时坏
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CFrameWndEx::OnActivate(nState, pWndOther, bMinimized);
if (nState == WA_ACTIVE || nState == WA_CLICKACTIVE)
{
SetFloatBarVisible(TRUE,TRUE,TRUE,TRUE);
}
else if (nState == WA_INACTIVE)
{
SetFloatBarVisible(FALSE,FALSE,FALSE,FALSE);
}
}
最后发现可以这样做:
在WM_ACTIVATEAPP中隐藏在WM_ACTIVATE中显示:
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CFrameWndEx::OnActivate(nState, pWndOther, bMinimized);
if (nState == WA_ACTIVE || nState == WA_CLICKACTIVE)
{
SetFloatBarVisible(TRUE,TRUE,TRUE,TRUE);
}
}
void CMainFrame::OnActivateApp(BOOL bActive, DWORD dwThreadID)
{
CFrameWndEx::OnActivateApp(bActive, dwThreadID);
if (!bActive )
{
SetFloatBarVisible(FALSE,FALSE,FALSE,FALSE);
}
}
另附:博客园的某位高手的另一种方法:
http://www.cnblogs.com/cswuyg/archive/2012/08/20/2647445.html