MFC 由主对话框创建的子对话框始终显示在主对话框前面,而且最小化主对话框,子对话框也会跟着最小化
答案:2 悬赏:20 手机版
解决时间 2021-03-04 22:24
- 提问者网友:谁的错
- 2021-03-04 15:00
MFC 由主对话框创建的子对话框始终显示在主对话框前面,而且最小化主对话框,子对话框也会跟着最小化
最佳答案
- 五星知识达人网友:鱼忧
- 2021-03-04 15:05
详见附件 demo 要把 非模态子窗口 的 父窗口设置 桌面
void CMfcdlg2014Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
if(!pSubDlg)
{
pSubDlg = new CSubDlg();// 非模态
pSubDlg->Create(IDD_DIALOG1, GetDesktopWindow());创建子窗口的时候传入桌面的窗口指针
}
pSubDlg->ShowWindow(SW_SHOW);// 显示 +
pSubDlg->SetFocus();// 得到焦点
}
void CMfcdlg2014Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
if(!pSubDlg)
{
pSubDlg = new CSubDlg();// 非模态
pSubDlg->Create(IDD_DIALOG1, GetDesktopWindow());创建子窗口的时候传入桌面的窗口指针
}
pSubDlg->ShowWindow(SW_SHOW);// 显示 +
pSubDlg->SetFocus();// 得到焦点
}
全部回答
- 1楼网友:怀裏藏嬌
- 2021-03-04 16:22
m_dlgTest.Create(IDD_DIALOG1,GetWindow(NULL));
m_dlgTest.ShowWindow(SW_SHOW);
可能是你创建子窗口的方法有问题吧。
可以先添加一个对话框资源,然后创建一个该对话框资源的类,然后在主对话框类中添加这个子对话框类的一个变量,然后用 Create(), 和ShowWindow 两个函数配合做的窗口不会出现你这样的问题。
现在你改的话很麻烦。可以找到主窗口最小化的消息响应函数在里头加补丁代码了,最小化的时候把要正常显示的子窗口再显示出来。
看了下代码 FindWindow 函数 不管你窗口是显示还是隐藏的,只要窗口存在都会找到。
所以你每次FindWindow都是成功的,所以每次都会执行隐藏窗口。
大概看了下代码没仔细看。
m_dlgTest.ShowWindow(SW_SHOW);
可能是你创建子窗口的方法有问题吧。
可以先添加一个对话框资源,然后创建一个该对话框资源的类,然后在主对话框类中添加这个子对话框类的一个变量,然后用 Create(), 和ShowWindow 两个函数配合做的窗口不会出现你这样的问题。
现在你改的话很麻烦。可以找到主窗口最小化的消息响应函数在里头加补丁代码了,最小化的时候把要正常显示的子窗口再显示出来。
看了下代码 FindWindow 函数 不管你窗口是显示还是隐藏的,只要窗口存在都会找到。
所以你每次FindWindow都是成功的,所以每次都会执行隐藏窗口。
大概看了下代码没仔细看。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯