请问如何正确地在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工程中使用对话框的方法不对,程序编译是能够通过的。
...全文
159 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

散分!

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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