一个主窗口和一个子模态对话框的故事

xhuacmer 2011-02-17 04:40:11
我在写一个程序,应用程序主界面(FWnd)会弹出一个子模态对话框(CWnd),这样用户就不能对主界面(FWnd)进行一系列的操作!可是要在CWnd上面进行一些操作。
如下图所示:

如此一来有一个问题,当我点击CWnd的最小化的按钮时,目的使其最下化,可是主窗口FWnd却被隐藏了,位于桌面最底层,即把桌面上的所有程序都最小化到任务栏就会看见它。这是为什么?,有什么方法可以避免呢? 万分谢谢!
...全文
181 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhuacmer 2011-02-17
  • 打赏
  • 举报
回复
告诉你一个现象,子模态对话框为非模态时,你把主窗口EnableWindow(FALSE),最小化子模态对话框后主窗口照样会被置于桌面最底层,置于主窗口有效时才不会置于桌面最底层。,
vann1982 2011-02-17
  • 打赏
  • 举报
回复
EnableWindow(FALSE)
xhuacmer 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 beyondhaven 的回复:]
在你的子窗口中加上:
BOOL XXXXXX::PreTranslateMessage(MSG* pMsg)
{
GetParent()->EnableWindow(TRUE); //使能父窗口
return FALSE;
}
[/Quote]
是无效还是有效呢? 我是要主窗口无效哦
xhuacmer 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 visualeleven 的回复:]
引用 3 楼 xhuacmer 的回复:
引用 2 楼 zhanghaaaa 的回复:
模态对话框是这样的,用非模态对话框就OK了

可是用非模态对话框的话,就阻止不了对主窗口(FWnd)的一系列操作,我想过通过屏蔽消息来实现,可是没有成功。

加个标记,在你的主窗口的消息处理中加个过滤,比如在PreTranslateMessage函数中加个过滤,如果符合条件消息才可以通过,继续往下处……
[/Quote]
同意你的说法,我正打算这样做,过滤掉键盘和鼠标消息!但是我之前是这样子窗口启动了,主窗口的PreTranslateMessage就直接返回,结果就不行了,可能这样就把所有消息都过滤掉了,程序就出问题了。
VC天下 2011-02-17
  • 打赏
  • 举报
回复
在你的子窗口中加上:
BOOL XXXXXX::PreTranslateMessage(MSG* pMsg)
{
GetParent()->EnableWindow(TRUE); //使能父窗口
return FALSE;
}
Eleven 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xhuacmer 的回复:]
引用 2 楼 zhanghaaaa 的回复:
模态对话框是这样的,用非模态对话框就OK了

可是用非模态对话框的话,就阻止不了对主窗口(FWnd)的一系列操作,我想过通过屏蔽消息来实现,可是没有成功。
[/Quote]
加个标记,在你的主窗口的消息处理中加个过滤,比如在PreTranslateMessage函数中加个过滤,如果符合条件消息才可以通过,继续往下处理,否则直接return TRUE返回
xhuacmer 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bragi523 的回复:]
用个非模态对话框

主对话框可以灰掉某些功能按钮等
[/Quote]
仅仅是灰掉按钮不行,主界面上有很多东西。
bragi523 2011-02-17
  • 打赏
  • 举报
回复
用个非模态对话框

主对话框可以灰掉某些功能按钮等
xhuacmer 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ji1bing 的回复:]
图片可能挂掉了,看不到

根据你的描述是不是这样的一个问题。
最小化模态子对话框,导致父窗口到了最底层?

子窗口是个模态窗口,只要子窗口不销毁,那么父窗口是不能收到任何消息的,就是说即使父窗口在最前端的话,也没有意义

而非模态则不会出现这种问题
[/Quote]
对哈,说的有道理!
ji1bing 2011-02-17
  • 打赏
  • 举报
回复
图片可能挂掉了,看不到

根据你的描述是不是这样的一个问题。
最小化模态子对话框,导致父窗口到了最底层?

子窗口是个模态窗口,只要子窗口不销毁,那么父窗口是不能收到任何消息的,就是说即使父窗口在最前端的话,也没有意义

而非模态则不会出现这种问题
xhuacmer 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhanghaaaa 的回复:]
模态对话框是这样的,用非模态对话框就OK了
[/Quote]
不好意思,图没有传上去呢,
xhuacmer 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhanghaaaa 的回复:]
模态对话框是这样的,用非模态对话框就OK了
[/Quote]
可是用非模态对话框的话,就阻止不了对主窗口(FWnd)的一系列操作,我想过通过屏蔽消息来实现,可是没有成功。
zhanghaaaa 2011-02-17
  • 打赏
  • 举报
回复
模态对话框是这样的,用非模态对话框就OK了
cdsnpeter 2011-02-17
  • 打赏
  • 举报
回复
没看到图哈。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧