请问一个ActiveX控件中引用DLL出现的问题。

sproll 2005-03-14 06:59:35
小弟写了一个MFC 扩展DLL,导出了一个类CPlay,该类是普通类,不是从MFC类中继承的。CPlay类中有一个对话框成员变量(类名是CDlgPlayTimer),它是从CDialog中继承的,我用它来处理消息。我在CPlay类的构造函数中创建这个对话框成员变量:
m_pdlgTimer = new CDlgPlayTimer;
m_pdlgTimer->Create( IDD_dlgPlayTimer, NULL );
m_pdlgTimer->ShowWindow( SW_HIDE );
然后我再创建了一个MFC应用程序工程(我选择的不是多文档和单文档,而是对话框工程),在工程中定义这个DLL的导出类(CPlay)变量,并且初始化,然后CPlay变量创建它自己的对话框成员,程序没有问题。
但是当我创建的是MFC ActiveX控件工程的时候,再去初始一个CPlay的变量,就发生错误。程序调试发现,是
m_pdlgTimer->Create( IDD_dlgPlayTimer, NULL );
这句代码出错。
我查了一下MSDN,发现上面说如果父窗体指针设为NULL,则会默认使用主程序窗口,于是我在DLL工程的代码:
m_pdlgTimer->Create( IDD_dlgPlayTimer, NULL );
前面加上显示主程序窗口指针的代码:
TRACE( "\n%d", AfxGetApp()->m_pMainWnd );
于是就发现输出的是0。
请问是不是就是因为DLL无法获得主程序窗口才导致在DLL中无法创建对话框呢?我要怎么做才能使得在MFC ActiveX控件中能够正确创建CPlay类?
哪位大哥能帮个忙的话我真是要给您跪下了!
...全文
158 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sproll 2005-03-17
  • 打赏
  • 举报
回复
血血!
qfxx 2005-03-15
  • 打赏
  • 举报
回复
参考一下下面文章
或许有帮助
http://www.xoeo.com/htmldata/2005_02/2/article_34140_1.html
sproll 2005-03-14
  • 打赏
  • 举报
回复
刚才发现,如果是EXE对话框工程引用这个DLL,那个位置输出
TRACE( "\n%d", AfxGetApp()->m_pMainWnd );
也是0的。
苦……

3,245

社区成员

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

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