DLL中显示非模态对话框,该怎么解决

DLL中显示非模态对话框
在DLL中通过如下的代码创建非模态对话框。用vc6.0编译DLL和调用程序。可以正常显示。但是换成vs2008编译,非模态对话框要么一闪而过,要么会僵住,整个程序都down掉。vc6.0和vs2008的处理有什么不同吗?DLL中显示非模态对话框,该怎么解决
long ModalessBox2(HWND pParent, ...)
{
CModalessDlg* dlg=new CModalessDlg();
...
dlg->m_pParent    = CWnd::FromHandle(pParent);

dlg->Create(IDD_MODAL,NULL);
dlg->ShowWindow(SW_SHOW);

return (long)dlg->m_hWnd;
}
------解决思路----------------------
试试 NULL 改为 pParent

 dlg->Create(IDD_MODAL,  pParent);
------解决思路----------------------
将dlg定义成静态变量
------解决思路----------------------
AFX_MANAGE_STATE(AfxGetStaticModuleState()) 
加了吗?
------解决思路----------------------

CWnd* mpWnd;
// CDlg1 消息处理程序
CWnd *  CInvoicerecords::Invoicerecords(CWnd* pWnd)
{
mpWnd = pWnd;
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (pDlg == NULL)
{
pDlg = new CInvoicerecords;
if( pDlg->Create( CInvoicerecords::IDD,CWnd::FromHandle( pWnd->GetSafeHwnd() ) ) )
{
pDlg->SetParent( pWnd );
return pDlg;
}
}
return NULL;
}

------解决思路----------------------
CInvoicerecords * pDlg;
------解决思路----------------------
全局的

CInvoicerecords * pDlg;