static CDllDialog *dllDialog;void ShowDlg(void) 
{
if (dllDialog == NULL)
{
dllDialog =new CDllDialog;
}
dllDialog->Create(IDD_DLL_DIALOG);
dllDialog->ShowWindow(SW_SHOW);

解决方案 »

  1.   

    void CRegularDllCallDlg::OnCalldllButton() 
    {
    typedef void (*lpFun)(void);
    HINSTANCE hDll; //DLL 句柄
    hDll = LoadLibrary("RegularDll.dll");
    if (NULL==hDll)
    {
    MessageBox("DLL 加载失败");
    }
    lpFun addFun; //函数指针
    lpFun pShowDlg = (lpFun)GetProcAddress(hDll,"ShowDlg");
    if (NULL==pShowDlg)
    {
    MessageBox("DLL 中函数寻找失败");
    }
    pShowDlg();
    }调用函数是这样,关闭MFC窗口后再次打开就出现那个错误了。
      

  2.   

    if (NULL==hDll)
    {
    MessageBox("DLL 加载失败");
    }
    lpFun addFun; //函数指针
    lpFun pShowDlg = (lpFun)GetProcAddress(hDll,"ShowDlg");
    if (NULL==pShowDlg)
    {
    MessageBox("DLL 中函数寻找失败");
    }
    失败要return的dllDialog->Create(IDD_DLL_DIALOG);创建后没有销毁,再次创建肯定有问题,至少会内存泄露
      

  3.   

    dllDialog->Create(IDD_DLL_DIALOG);
    怎么销毁?查不到这个函数。delete不行
      

  4.   


    其实也不用销毁, 下次使用时如果窗口存在的话,直接显示就行了
    if(IsWindow(dllDialog->GetSafeHwnd())
    {
        dllDialog->ShowWindow(SW_SHOW);
    }
    else
    {
        dllDialog->Create(IDD_DLL_DIALOG);
    }