我用MFC编写了一个DLL,在DLL中使用了非模态窗体,在FreeLibrary时DestroyWindow无响应,求助~!!!!
我的代码如下:
CPPStreamDlg *m_ppdlg;//全局变量,CPPStreamDlg为放置PowerPlayer.dll的窗体
在InitInstance()中创建窗体
HRESULT hr =OleInitialize(NULL);
if (hr == S_FALSE)
{
OleUninitialize();
return FALSE;
}
AfxEnableControlContainer();
m_ppdlg = new CPPStreamDlg();
m_ppdlg->Create(IDD_DIALOG1);
m_ppdlg->ShowWindow(SW_SHOW);
在ExitInstance()中释放窗体
m_ppdlg->DestroyWindow();//-------运行到这句程序无响应--------//
delete m_ppdlg;
m_ppdlg=NULL;
CleUninitialize();在CPPStreamDlg上我只放置了PPStream的播放控件PowerPlayer.dll,啥事也没做.在LoadLibrary()时窗体正常显示
在FreeLibrary()时程序死机!!!!!!!!!!!!!!!!!!
什么原因?
我的代码如下:
CPPStreamDlg *m_ppdlg;//全局变量,CPPStreamDlg为放置PowerPlayer.dll的窗体
在InitInstance()中创建窗体
HRESULT hr =OleInitialize(NULL);
if (hr == S_FALSE)
{
OleUninitialize();
return FALSE;
}
AfxEnableControlContainer();
m_ppdlg = new CPPStreamDlg();
m_ppdlg->Create(IDD_DIALOG1);
m_ppdlg->ShowWindow(SW_SHOW);
在ExitInstance()中释放窗体
m_ppdlg->DestroyWindow();//-------运行到这句程序无响应--------//
delete m_ppdlg;
m_ppdlg=NULL;
CleUninitialize();在CPPStreamDlg上我只放置了PPStream的播放控件PowerPlayer.dll,啥事也没做.在LoadLibrary()时窗体正常显示
在FreeLibrary()时程序死机!!!!!!!!!!!!!!!!!!
什么原因?
{
m_ppdlg->DestroyWindow();//-------运行到这句程序无响应--------//
delete m_ppdlg;
m_ppdlg=NULL;
CleUninitialize();
}
判断一下m_ppdlg是否有效。
然后根据情况进行停止动作,并释放PPStream控件的资源.
如果完成上面的动作应该不会出现你说的问题了.
印象中我写com时,非模态窗口在com的析构函数里不能用destroywindow();但是如果你在其它地方释放时,又必须destroywindow。至于为什么,我估计可能与非模态窗口的父窗口有些关系!