关于模式对话框的问题 现在我有个对话框程序,一开始程序同时启动了一个非模式对话框。现在程序再弹出一个模式对话框。这时,如果去点击主窗口,那么,这个模式对话框就会闪两下,主窗口是无法再操作的。但另外那个非模式对话框还可以操作,有什么办法可以让点击他的效果和主窗口一样? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把弹出的模式对话框对话框的pParent设置为那个非模式对话框就可已达到你的要求了 你的意思是,当你当模式对话框弹出时,前面的那个非模式对话框也不能操作?一个方法是将第二个模式对话框的父窗口设为非模式对话框。代码大致如下:CMyDialog *plg=new CMyDialog;//这个定义一个全局变量,对应非模式对话框void CfffDlg::OnBnClickedButton1(){ plg->Create(IDD_DIALOG1,this); plg->ShowWindow(SW_SHOW);}以上是弹出非模式对话框。void CfffDlg::OnBnClickedButton2(){ CMyDialog dlg(plg); dlg.DoModal(); }以上是弹出模式对话框,注意红色部分。 抱歉,重新描述一下:==============================有个对话框程序,对话框A,一开始程序同时启动了一个非模式对话框B。现在程序再弹出一个模式对话框MC。这时,如果去点击A,那么,这个模式对话框MC就会闪两下,主窗口A是无法再操作的。但另外那个非模式对话框B还可以操作。现在只能实现A或B其中一个不能操作。。我现在想要的效果是,A和B都不能操作,MC关闭后,才可以响应A、B。 我现在想要的效果是,A和B都不能操作,MC关闭后,才可以响应A、B。==========方法上面已经说过了,就是让最后弹出来的MC对话框以B窗口为父窗口就行了,当然B窗口最好是以A窗口为父窗的。 MC的父窗口是B的话,A还是可以响应的。这个我试过的。 不好意思,我说错了,我试试呢。这个MC本来就是B弹出来的,原来设的是NULL,B不能响应消息,A可以。我设成A后,A不能响应消息了,但B可以。我还没试过B为parent的情况,试一下呢。 如果MC真是B弹出来的话,那么正常情况下,A和B都应该无法响应才对啊! 我刚才已经试了,的确不行。A主对话框,某个函数中创建了B,非模式对话框。B弹出一个模式对话框MC,这时,不管MC的父窗口是A、B还是NULL都,不行,如果为B和为NULL是一样的效果。弹出MC后,B是不能操作了。但A可以移动,上面的按钮同样可以点击。如果父窗口设为A,A不能操作了,但B可以移动,上面的按钮同样可以点击。 我不知道你是如何写代码的。但是如果真如你所说,A是主对话框,其中一个函数创建了无模式对话框B,而B中的某一个函数又创建了模式对话框MC,那么当MC没有关闭时,A和B都不可能会响应的。 搞定了,B的父窗口没有设为A,我设成A后就可以了。谢谢wltg2001。等会再结。不过很奇怪,我A创建B时,是调用一个DLL,在DLL中完成的。我单独写了一个EXE测试时,B的父窗口设成NULL,也同样能实现想要的效果。是不是父窗口如果为NULL时,创建会作一些特殊的处理?同一模块中与不同的模块有不同的处理? 请问如何查看MFC中的系统文件源代码?例如window.cpp、AFXCORE.cpp文件 ComboBox如何响应WM_KEYDOWN、WM_KEYUP消息? 看懂MFC Windows程序设计就能写程序了吗? 复选框设置问题 请教各位朋友后缀名是.php的文件该则么打开啊?急切等待!! 菜单的问题!求助! 请问VC如何在windows的桌面上画图 0xC0000005: Access Violation 关于宏定义函数块 关于vc与数据库的语句 计算机等级考试(四级)结果出来了吗?那里可以查到?顺便问一个题 求助,帮忙c++编程,求求求!!! 请问如何备份MSDN 2001 的收藏?
就可已达到你的要求了
一个方法是将第二个模式对话框的父窗口设为非模式对话框。代码大致如下:
CMyDialog *plg=new CMyDialog;//这个定义一个全局变量,对应非模式对话框void CfffDlg::OnBnClickedButton1()
{
plg->Create(IDD_DIALOG1,this);
plg->ShowWindow(SW_SHOW);
}
以上是弹出非模式对话框。void CfffDlg::OnBnClickedButton2()
{
CMyDialog dlg(plg);
dlg.DoModal();
}
以上是弹出模式对话框,注意红色部分。
==============================
有个对话框程序,对话框A,一开始程序同时启动了一个非模式对话框B。
现在程序再弹出一个模式对话框MC。这时,如果去点击A,那么,这个模式对话框MC就会闪两下,主窗口A是无法再操作的。
但另外那个非模式对话框B还可以操作。
现在只能实现A或B其中一个不能操作。。我现在想要的效果是,A和B都不能操作,MC关闭后,才可以响应A、B。
==========
方法上面已经说过了,就是让最后弹出来的MC对话框以B窗口为父窗口就行了,当然B窗口最好是以A窗口为父窗的。
这个MC本来就是B弹出来的,原来设的是NULL,B不能响应消息,A可以。
我设成A后,A不能响应消息了,但B可以。我还没试过B为parent的情况,试一下呢。
B弹出一个模式对话框MC,这时,不管MC的父窗口是A、B还是NULL都,不行,如果为B和为NULL是一样的效果。弹出MC后,B是不能操作了。但A可以移动,上面的按钮同样可以点击。
如果父窗口设为A,A不能操作了,但B可以移动,上面的按钮同样可以点击。
但是如果真如你所说,A是主对话框,其中一个函数创建了无模式对话框B,而B中的某一个函数又创建了模式对话框MC,那么当MC没有关闭时,A和B都不可能会响应的。
我单独写了一个EXE测试时,B的父窗口设成NULL,也同样能实现想要的效果。是不是父窗口如果为NULL时,创建会作一些特殊的处理?同一模块中与不同的模块有不同的处理?