请问如何正确地在ActiveX控件中添加一个自定义的窗体并调用其功能(VC6.0)

sproll 2004-10-06 11:25:47
各位大虾,小弟制作一个控件的时候,在这个控件的工程中添加了一个使用socket的类CSocServe,由于该类要收发消息,所以又在CSocServe中添加了一个对话框成员变量。该对话框我是用以下方法添加的:
1、在classview里面,“new ATL object”
2、选择miscellaneous中的对话框,并赋其名称为DlgSocMes,于是生成了一个CDlgSocMes对话框类
3、在CSocServe中添加一个CDlgSocMes成员变量的指针:
CDlgSocMes *m_pdlgMes;

然后在CSocServe的构造函数中创建这个CDlgSocMes对象

m_pdlgMes = new CDlgSocMes;
m_pdlgMes->Create( NULL );
m_pdlgMes->ShowWindow( SW_HIDE );

最后在析构函数中删除它

delete m_pdlgMes;

运行的时候发现,在删除这个对话框对象的时候,程序进入了CDlgSocMes的析构函数,然后在析构函数执行完返回的时候(CDlgSocMes析构函数为空,无任何需要释放的资源),就出现了异常。在输出栏中显示:
ATL: ERROR - Object deleted before window was destroyed

请问是否我在ATL工程中使用对话框的方法不对,程序编译是能够通过的。
...全文
104 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
block1956815 2004-10-07
楼主的问题 我也遇到过的说~~~ 也是困扰了我很久 同情。。。

但是我当时没有调用DestroyWindows()也没有问题! 千真万确! 楼主可以试试呢。
  • 打赏
  • 举报
回复
sproll 2004-10-07
请问这位老兄是怎么解决的?
  • 打赏
  • 举报
回复
sproll 2004-10-06
搞定了!
ATL非模态对话框调用与MFC对话框不同,首先要Create,然后ShowWindow,用完后必需调用它的DestroyWindow成员函数,如果未调用则报
ATL: ERROR - Object deleted before window was destroyed

散分!
  • 打赏
  • 举报
回复
发帖
ATL

3233

社区成员

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