登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: [vc/vc6/mfc] CDialog 派生类 DoModal() 后弹出的窗口会将其挡住的解决方法     [回主站]     [分站链接]
标题
[vc/vc6/mfc] CDialog 派生类 DoModal() 后弹出的窗口会将其挡住的解决方法
clq
浏览(0) + 2008-07-23 10:44:32 发表 编辑

关键字:

[vc/vc6/mfc] CDialog 派生类 DoModal() 后弹出的窗口会将其挡住的解决方法

项目中的一个需求,在一个对话框的程序中要弹出 n 个非模式的独立窗口,结果发现这些弹出的窗口会将这个对话框挡住,折腾了很久都没办法解决,最后想起 delphi 中也有这样的类似问题,解决方法是弄一个不可见的窗口作为主窗口.结果一试还真解决了!

具体方法如下,弄一个普通的 dialog ,在其 OnInitDialog 初始化时将真正的主窗口非模式显示出来.

BOOL CMainDlg::OnInitDialog()
{
CDialog::OnInitDialog();

//显示真正的主窗体
CServerAdminDlg * dlg = new CServerAdminDlg();
dlg->Create(IDD_SERVER_ADMIN_DIALOG);
dlg->ShowWindow(SW_SHOW);

SetTimer(1, 3, NULL);

return TRUE;
}

那个 SetTimer 是用来隐藏主窗体的,应该还有更好的办法,不过目前未知.
void CMainDlg::OnTimer(UINT nIDEvent)
{
//隐藏主窗体
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);

CDialog::OnTimer(nIDEvent);
}

这时无论新建的窗口是从那里出来的都不会挡住别人了 :)

后记:
这个其实应该是 mfc 的 bug ,我用 sdk 直接建立窗口是没有这种现象的.


总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1