请问一个ActiveX控件中引用DLL出现的问题。
小弟写了一个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类?
哪位大哥能帮个忙的话我真是要给您跪下了!