我设计了一个dll其中有一个对话框资源,在应用程序中使用,可是对话框无法显示出来,但是函数执行成功。请问怎么样才可以让应用程序调用dll时能显示那个对话框呢?谢谢……

解决方案 »

  1.   

    这是我们项目中的典型应用:
    -------------
    {
        HINSTANCE hOldInst = AfxGetResourceHandle();
        HINSTANCE hDll = AfxLoadLibrary( "XXXX.dll" );
        if ( hDll!=NULL )
        {
            AfxSetResourceHandle( hDll );
            
            CXXXXDlg dlg;     //-- this dlg is in DLL resource.
            dlg.Setxxxxx( some parameters );
            
            if( IDOK == dlg.DoModal() )
            {
            }
        }
        AfxSetResourceHandle( hOldInst );
        AfxFreeLibrary( hDll );    
    }
      

  2.   

    dllmain函数前面的
    static AFX_EXTENSION_MODULE mydll = { NULL, NULL };去掉static
    在你的导出类声明前加上_declspec(dllexport)
    因为你的mydll声明是全局的
    还要在应用程序头文件中声明extern AFX_EXTENSION_MODULE mydll;
    使用的时候
    HINSTANCE hInstOld = AfxGetResourceHandle();
    AfxSetResourceHandle(mydll.hModule);
      

  3.   

    to CCsdnCC(白勢槅) :CXXXXDLG既然是dll内部的资源怎么会有定义呢?我的意思就是我调用dll的一个方法,方法中显示一个对话框……
      

  4.   

    to  webber84(糕鱼昏) 我试试你的方法哈
      

  5.   

    to  webber84(糕鱼昏) 我试试你的方法哈
      

  6.   

    如果你的DLL dynamically linked against the MFC DLLs,即不使用Static Library连接,应加上下面的一句作为你的DLL输出函数的第一句:
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
      

  7.   

    如果你的DLL dynamically linked against the MFC DLLs,即不使用Static Library连接,应加上下面的一句作为你的DLL输出函数的第一句:
    AFX_MANAGE_STATE(AfxGetStaticModuleState());