您的位置:首页 > 其它

对话框程序, 在 OnInitDialog的最后 showWindow(SW_HIDE),不管用的原因

2014-03-21 09:59 411 查看
我研究过,原因及隐藏方法 .

MFC对话框应用程序启动时在OnInitDialog()之后会显示对话框的原因如下

MLF_SHOWONIDLE标志

int CDialog::DoModal()

// enter modal loop

DWORD dwFlags = MLF_SHOWONIDLE;

if (GetStyle() & DS_NOIDLEMSG)

dwFlags |= MLF_NOIDLEMSG;

int CWnd::RunModalLoop(DWORD dwFlags)

BOOL bShowIdle = (dwFlags & MLF_SHOWONIDLE) && !(GetStyle() & WS_VISIBLE);

// show the dialog when the message queue goes idle

if (bShowIdle)

{

ShowWindow(SW_SHOWNORMAL);

UpdateWindow();

bShowIdle = FALSE;

}

MFC对话框应用程序启动时隐藏的方法

1 取消对话框的WS_VISIBLE属性

2 重载WM_ERASEBKGND消息 首次调用此函数进行忽略即可

BOOL CxxxDlg::OnEraseBkgnd(CDC* pDC)

{

static bool bFirst=true;

if(bFirst)

{

bFirst=false;

ShowWindow(SW_HIDE);

return TRUE;

}

return CDialog::OnEraseBkgnd(pDC);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: