MFC 初始化时对话框的隐藏(处理showwindow时窗口闪的情况)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l_tudou/article/details/80475562

在初始化时 当使用 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);就行
展开阅读全文

没有更多推荐了,返回首页