在动态库中调用对话框的有关问题,麻烦高人赐教
在动态库中调用对话框的问题,麻烦高人赐教
我在dll中定义了一个对话框类CMyDlg,CMyApp为dll的App,Init和Show都是dll的输出函数
Class CMyApp
{
...
CMyDlg m_Dlg;
}
CMyApp::Init()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
...
m_Dlg.Create(IDD_DIALOG1);
...
}
CMyApp::Show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
...
m_Dlg.ShowWindow(SW_SHOWNORMAL);
...
}
在调用Show的时候,对话框无法显示,调试时发现m_Dlg的Handle是0,但是如果调用
m_Dlg.DoModal()就能正常显示,不知道什么原因,望高人赐教,万分感谢
------解决方案--------------------
m_Dlg.Create(IDD_DIALOG1);
改为
AfxSetResourceHandle( theApp.m_hInstance );
m_Dlg.Create(IDD_DIALOG1);
------解决方案--------------------
if(!::IsWindow(m_Dlg.GetSafeHwnd()))
{
m_Dlg.Create(IDD_DIALOG1);
}
m_Dlg.ShowWindow(SW_SHOW);
------解决方案--------------------
用MFC扩展DLL
新建一个类,并在类中提供一个函数专门来显示对话框
class AFX_EXPORT_MANAGED myclass
{
public:
showdialog() {
CMyDlg dlg;
dlg.Domodal();
}
}
在exe中调用:
CMyClass dlg;
dlg.Showdialog();
这样就出来了。
我在dll中定义了一个对话框类CMyDlg,CMyApp为dll的App,Init和Show都是dll的输出函数
Class CMyApp
{
...
CMyDlg m_Dlg;
}
CMyApp::Init()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
...
m_Dlg.Create(IDD_DIALOG1);
...
}
CMyApp::Show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
...
m_Dlg.ShowWindow(SW_SHOWNORMAL);
...
}
在调用Show的时候,对话框无法显示,调试时发现m_Dlg的Handle是0,但是如果调用
m_Dlg.DoModal()就能正常显示,不知道什么原因,望高人赐教,万分感谢
------解决方案--------------------
m_Dlg.Create(IDD_DIALOG1);
改为
AfxSetResourceHandle( theApp.m_hInstance );
m_Dlg.Create(IDD_DIALOG1);
------解决方案--------------------
if(!::IsWindow(m_Dlg.GetSafeHwnd()))
{
m_Dlg.Create(IDD_DIALOG1);
}
m_Dlg.ShowWindow(SW_SHOW);
------解决方案--------------------
用MFC扩展DLL
新建一个类,并在类中提供一个函数专门来显示对话框
class AFX_EXPORT_MANAGED myclass
{
public:
showdialog() {
CMyDlg dlg;
dlg.Domodal();
}
}
在exe中调用:
CMyClass dlg;
dlg.Showdialog();
这样就出来了。