1. 程式人生 > >MFC 初始化時對話方塊的隱藏(處理showwindow時視窗閃的情況)

MFC 初始化時對話方塊的隱藏(處理showwindow時視窗閃的情況)

在初始化時 當使用 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);就行