在初始化时 当使用 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 );
BOOL m_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);就行