现在想做一个程序,在dll中创建一个无模式对话框,通过一个exe程序来调用它。
现在的基本思路是在dll中用create()函数,然后在输出函数中使用showwindow,显示无模式对话框。exe程序通过显式的或隐式连接调用这个函数,以达到调用的目的。
现在的问题是,有错误:assert()函数(vc的函数)提示说找不到父窗口。
请大家想想办法,或提供一些连接,谢谢。

解决方案 »

  1.   

    //it works well in my project.this is my code:
    CNetClientDlg*g_pDlg;
    BOOL __declspec(dllexport)__stdcall selectfullnight()
    {
         AFX_MANAGE_STATE(AfxGetStaticModuleState());
    g_pDlg = new CNetClientDlg;
    g_pDlg->Create(IDD_STATDIALOG,NULL);
    g_pDlg->CenterWindow();
    g_pDlg->ShowWindow(SW_SHOW);
    }
      

  2.   

    我的代码差不多也是这样:看一下,
    无模式对话框中的代码
    init::Cinit(CWnd* pParent /*=NULL*/)
      : CDialog(Cinit::IDD, pParent)
     {
      AFX_MANAGE_STATE(AfxGetStaticModuleState());//04--10
               Create(Cinit::IDD, pParent);
     }
    输出函数代码:
    __declspec( dllexport ) int Load_About()
    {
    Cinit *AboutDlg=new Cinit;
    AboutDlg->Create(IDD_DIALOG_init,NULL);
    AboutDlg->ShowWindow(SW_SHOW);
    }
    请指正!
      

  3.   

    if you change  to
    int __declspec( dllexport )  Load_About()
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState();
    Cinit *AboutDlg=new Cinit;
    AboutDlg->Create(IDD_DIALOG_init,NULL);
    AboutDlg->ShowWindow(SW_SHOW);
    }?
    check it.
      

  4.   

    改为 Extension DLL 试试
      

  5.   

    http://expert.csdn.net/Expert/topic/1573/1573546.xml?temp=.7344629
      

  6.   

    把父窗体的句柄传给它吧。记得在函数开始处加上:
    AFX_MANAGE_STATE(AfxGetStaticModuleState();