分别定义了二个对话框类.
主程序中:
CDlg1 dlg1;
m_pMainWnd = &dlg1;
INT_PTR nResponse1 = dlg.DoModal(); CDlg2 dlg2;
m_pMainWnd = &dlg2;
INT_PTR nResponse2 = dlg.DoModal();
第2个对话框没有显示出来.
而如果把带红色的去掉,就可以了.这是为什么?
主程序中:
CDlg1 dlg1;
m_pMainWnd = &dlg1;
INT_PTR nResponse1 = dlg.DoModal(); CDlg2 dlg2;
m_pMainWnd = &dlg2;
INT_PTR nResponse2 = dlg.DoModal();
第2个对话框没有显示出来.
而如果把带红色的去掉,就可以了.这是为什么?
解决方案 »
- 原始套接字为什么要计算校验和。解决给分
- DoModle()的实质是啥
- degub与release的区别,高分求救
- 我有Windows2000的部分源代码,加压后800多兆,有很多API函数的实现,留下你们的邮箱,回帖够200人,每人给4兆的代码
- SDK 方式 使用CSliderCtrl 类
- 如何在对话条(CDialogBar)上的按钮上贴位图呢?
- glutInit(&argc, argv);编译错误
- 5000元请人写工具
- 修改信息成功将名字改了过来!散分庆祝!
- 请问::何种软件可以压缩win32程序,并使其可以自行在内存解压运行
- 基于FormView 单文档 ,另有一个子窗口化的对话框,对话框中有ListBox等可能控件,如何在FormView中显示子窗口内的控件 的数据?
- 急急急~线程死亡?
m_pMainWnd = &dlg1; 这一句使用时表示dlg1结束主线程便结束,所以第二个dlg不可能显示了
m_pMainWnd由MFC自动管理的
但我单步调试的时候,第一个dlg出来我点ok以后,程序并没有跳到结束,而继续执行后面第二个dlg的语句,但dlg不出来.
而主程序也是新建对话框项目出来的,只是加了调用第2个对话框的一点代码.to rookieme :
谢谢你的回复,那你可以帮我解答一下单步运行的问题吗?
1.首先,你的程序不是基于对话框的,m_pMainWnd为你主窗口类数据成员;
2.代码这样写,改变了m_pMainWnd 指针位置,进入模态对话框线程,关闭对话框,系统回到原窗口界面,但是,由于m_pMainWnd 值不能恢复,m_pMainWnd为null,这时由CWinApp对象决定程序是否中断;
3.所以,程序继续,进入下一个对话框dlg2,但是m_pMainWnd所在窗口类数据已因为指针位置被切换而无法识别,由其确定的窗口无法显示出来(模态对话框是作为其子窗口出现的,因此也无法显示出来了).
参考我的"MultiDialog.zip"
当主窗口结束时,线程已无法对窗口输出,所以单步虽可执行但不能输出,同理改成其它窗口输出函数同样不能输出,如AfxMessageBox同样不能输出,但所有非窗口操作语句可正常运行