请问一个关于非模态对话框和视图的问题

goodsong 2002-09-19 10:27:35
MFC MDI界面
在View类里定义了一个非模态对话框指针
请问怎样做才能让非模态对话框在子窗口被最小化时,失去焦点时隐藏,而在激活时显示出来,就象非模态对话框是属于这个视图一样
不知我说清楚了没有。
请高手帮忙,谢谢!
...全文
75 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallfool 2002-09-22
  • 打赏
  • 举报
回复
CView::OnActiveView()?
In355Hz 2002-09-22
  • 打赏
  • 举报
回复
“子窗口最小化或失去焦点时会发送什么消息”
试试WM_MDIACTIVATE消息,应该在ChildFrame可以接受到。
goodsong 2002-09-22
  • 打赏
  • 举报
回复
让我试试
等问题解决就给分
不解决也会给分的
谢谢大家关心
icelight 2002-09-20
  • 打赏
  • 举报
回复
自定义消息吧。

假设非模态对话框句柄为hWnd,当子窗口最小化或失去焦点时PostMessage(hWnd,0x7777,0,0)
非模态对话框捕获message==0x7777的消息,ShowWindow(SW_HIDE)将自已隐藏。
oldworm 2002-09-20
  • 打赏
  • 举报
回复
最小化是:WM_SIZE消息,wParam 为SIZE_MINIMIZED表示已经最小化,注意,是已经最小化,就是最小化以后发出的消息,对你的应用是可以的。

失去焦点是WM_KILLFOCUS 消息
你在MSDN的索引输入框中输入WM_SIZE、WM_KILLFOCUS能得到更详细的说明。
goodsong 2002-09-20
  • 打赏
  • 举报
回复
我就是想知道子窗口最小化或失去焦点时会发送什么消息呀
flybusflybus 2002-09-19
  • 打赏
  • 举报
回复
test=new Page;
test->Create(IDD_DIALOG1);
test->ShowWindow(1);
CRect rect;
test->GetWindowRect(rect);
test->SetWindowPos(&CWnd::wndTop, rect.left,rect.top,rect.right,rect.bottom,
SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);

注意wndTop,用这个参数可以满足你的要求,另外有wndTopmost。。。
具体区别见msdn
goodsong 2002-09-19
  • 打赏
  • 举报
回复
可能是我的意思没说明白
非模态对话框我是会建的
关键是对于MDI界面,当包含视图的子窗口最小化时,非模态对话框仍然看得到阿
我要做的是当打开多个文档(子窗口)时,当子窗口最小化或失去焦点时,模态对话框能隐藏,获得焦点时能显示出来,不知道该在什么地方处理阿
100分没人要吗?
我不是大明 2002-09-19
  • 打赏
  • 举报
回复
如果你的对话框是在View下面建的话用
pYourDlg->Create(IDD_YOUDLG, this);
this就是说你的对话框是VIEW的子窗体,这样就会一起动!
goodsong 2002-09-19
  • 打赏
  • 举报
回复
不行啊

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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