再求如何在ATL工程中添加对话框的问题(誓把问题搞定)

sproll 2004-10-06 01:43:22
请问各位大虾,小弟创建了一个ATL工程,然后在这个工程中添加了一个控件,现在小弟要实现在调用这个控件的某个函数中弹出一个对话框,请问如何才算是正确地往工程中添加对话框?
我是这么做的:
1、在classview里面,右击工程后选择“new ATL object”
2、选择miscellaneous中的对话框,并赋其名称为DlgSocMes,于是生成了一个继承自CAxDialogImpl的CDlgSocMes对话框类
3、在控件类中添加一个CDlgSocMes对象:dlgT,
4、在控件的构造函数中添加:

dlgT.Create( NULL );
dlgT.ShowWindow( SW_SHOW );
这样做运行是没有问题的,但是程序退出的时候出现异常,提示说:
ATL: ERROR - Object deleted before window was destroyed
各位大哥帮帮忙啊!跪求!
...全文
229 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sproll 2004-10-06
搞定了!
ATL非模态对话框调用与MFC对话框不同,首先要Create,然后ShowWindow,用完后必需调用它的DestroyWindow成员函数,如果未调用则报
ATL: ERROR - Object deleted before window was destroyed
  • 打赏
  • 举报
回复
sproll 2004-10-06
zfive5:
DoModal()可以,程序可以正常显示和关闭。不过小弟还有个麻烦,我不需要窗体显示出来,我主要用这个窗体进行消息传递。我在使用socket的时候,需要传递一些accept,connect等消息,所以借用一个这个窗体的消息机制转发到一个由外部设定的消息窗口中去。所以dlgT最好还是不要显示出来。为什么我用
dlgT.Create( NULL );
dlgT.ShowWindow( SW_SHOW );
这样子,程序就会在dlgT的析构函数中出错呢。
  • 打赏
  • 举报
回复
醉马不肖 2004-10-06
CDlgSocMes dlgT;
dlgT.DoModel( );
  • 打赏
  • 举报
回复
发帖
ATL

3233

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
帖子事件
创建了帖子
2004-10-06 01:43
社区公告
暂无公告