在初始化时 当使用 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);就行
本文介绍了一种解决MFC对话框在隐藏时出现闪现现象的方法。通过重写对话框的显示函数并调整窗口位置更改消息处理,可以在隐藏对话框时不产生视觉上的闪烁效果。
348

被折叠的 条评论
为什么被折叠?



