在动态库中调用对话框的有关问题,麻烦高人赐教

在动态库中调用对话框的问题,麻烦高人赐教
我在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();

这样就出来了。