MFC 初始化時對話方塊的隱藏(處理showwindow時視窗閃的情況)
阿新 • • 發佈:2019-01-01
在初始化時 當使用 ShowWindow(SW_HIDE) 隱藏對話方塊時 出現閃的情況 如下解決:
在如下位置新增 ON_WM_WINDOWPOSCHANGING()
BEGIN_MESSAGE_MAP()
ON_WM_WINDOWPOSCHANGING()
END_MESSAGE_MAP()
程式碼中新增宣告 afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);//對話方塊隱藏使用
BOOL MYShowWindow( int nCmdShow );
BOOLm_visible;//判斷 隱藏還是顯示
程式碼實現:
void CMsgDlg::OnWindowPosChanging( WINDOWPOS* lpwndpos ) { if (!m_visible) { lpwndpos->flags &= ~SWP_SHOWWINDOW; } else { return; } CDialog::OnWindowPosChanging(lpwndpos); }
BOOL CMsgBDlg::MYShowWindow( int nCmdShow )
{
if(SW_SHOW == nCmdShow)
{
//顯示
nCmdShow = SW_SHOWNORMAL;
m_visible = TRUE;
}
else if(SW_HIDE == nCmdShow)
{
//隱藏
m_visible = FALSE;
}
return ShowWindow(nCmdShow);
}
當在顯示或隱藏的地方使用 MYShowWindow(SW_SHOW);或者MYShowWindow(SW_HIDE);就行