我设计了一个DLL,里面用了MFC的CDialog,在导出函数中调用我的函数
void ShowAppWnd()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
appwnd.Create(IDD_DIALOG,NULL);
appwnd.ShowWindow(SW_SHOW);
}显示这个对话框,可是有问题???为什么,在DLL使用MFC要注意什么问题啊?

解决方案 »

  1.   

    what is type of appwnd?
      

  2.   

    第一你的对话框ID的值是不是其他的ID重复?
    不重复的话又没有夹在资源句柄?
    HINSTANCE hInstResourceClient = AfxGetResourceHandle();
    AfxSetResourceHandle(::GetModuleHandle("aaa.dll"));
    CaaaDlg dlg;
    dlg.DoModal();
    AfxSetResourceHandle(hInstResourceClient);
      

  3.   

    第一你的对话框ID的值是不是其他的ID重复?
    不重复的话又没有加载资源句柄?
    HINSTANCE hInstResourceClient = AfxGetResourceHandle();
    AfxSetResourceHandle(::GetModuleHandle("aaa.dll"));
    CaaaDlg dlg;
    dlg.DoModal();
    AfxSetResourceHandle(hInstResourceClient);
      

  4.   

    将原型修改如下:extern "C"  __declspec( dllexport ) void ShowAppWnd()
      

  5.   

    to cline我的程序就彻底崩溃,出现是否要调试的对话框to  bluebohe(薄荷) 
    我看MFC的代码注释,说要加入AFX_MANAGE_STATE(AfxGetStaticModuleState());
    在所有到处函数前面,可以没有用,你的代码不Create可以用吗?
    to kangfx不行~~~