我用普通的MFC的DLL,并在资源中生成了一个对话框资源,然后为该对话框派生了类CXXdlg dlg,最后我在该DLL 中的导出函数中dlg.DoModle(在dlg.DoModle 之前 AFX_MANAGE_STATE ( AfxGetStaticModuleState () )),但是一调用该导出函数就有断言错误,调试发现,Debug版本下dlg = 0x00000000;发行版本下可以通过,以上仅是在2000下的结果。如果在98下,Debug版本情况一样,发行版本下,该对话框会一扇而过。恳请高手们帮帮忙,苦闷好久了。

解决方案 »

  1.   

    试试
    AfxSetRecourceHandle(::GetModuleHandle(your.dll));
      

  2.   

    是没有问题的啊你可能那里没有写对啊.去这里看看你要的例子
    http://www.vckbase.com/code/downcode.asp?id=1783
      

  3.   

    比方我要显示这个对话框
    int InputPin_show(char* pin)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    int i;
    CINPUT InputPin;
    i=InputPin.DoModal();

    }
      

  4.   

    roger_ding(海天一色) ( )请问 AfxSetRecourceHandle(::GetModuleHandle(your.dll)); 怎么用?用在那?
      

  5.   

    在 Dll 中增加一个函数,用此函数打开对话框,然后你的应用程序调用此函数即可,无需直接生成对话框,这样即方便又安全
      

  6.   


    ************************************
    在Dll中创建对话框并调用
    作者:freedk下载本文示例代码1、第一步创建一“MFC AppWizard (dll)”工程,接下来选择“Regular Dll using shared MFC DLL”,点击“Finish”。2、添加一对话框资源到工程中,从菜单中选择Insert->Resource,添加一“Dialog”
    选择“New”,至此对话框已添加到DLL工程中。3、为对话框添加一新类,如:CTest,基类为CDialog。4、在MFCDLL.cpp中(因创建的工程为MFCDLL)添加接口函数:extern "C" __declspec(dllexport) void Show(){        AFX_MANAGE_STATE(AfxGetStaticModuleState());        CTest test;        test.DoModal ();}别忘了在文件中添加: #include "Test.h":),大功告成,编译吧! 5、用VC新建一对话框工程,在一按钮点击事件中添加如下代码: typedef void (WINAPI * TESTDLL)(); HINSTANCE hmod;hmod = ::LoadLibrary ("mfcdll.dll");if(hmod==NULL){        AfxMessageBox("Fail");}TESTDLL lpproc;lpproc = (TESTDLL)GetProcAddress (hmod,"Show");if(lpproc!=(TESTDLL)NULL)        (*lpproc)();FreeLibrary(hmod);****************************************