我做了一个MFC扩展DLL.是一个对话框,我需要导出这个对话框类,在类名前加上 AFX_EXT_CLASS.然后在使用的时候把 dlg.h , dlg.dll , dlg.lib都拷贝到目录下.在我程序中引用dll的时候我用了下面的句子:#include "dlg.h"
......cdlg  dlg;
dlg.domodal();问题是, 在dlg.h中,由于它是相应的对话框的类 ,所以在它的源代码中有下面的语句: 
{EMUE =IDD_DIALOG1}
这样的句子, 在执行的时候就报错, 大概意思就是不存在IDD_DIALOG1这个资源,而我知道这个资源就是
在DLL中的.这个问题怎么解决???

解决方案 »

  1.   

    AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
    cdlg  dlg;
    dlg.domodal();
      

  2.   

    http://community.csdn.net/Expert/topic/3296/3296255.xml?temp=.1415522
      

  3.   

    http://www.vckbase.com/document/viewdoc/?id=543
      

  4.   

    AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
    cdlg dlg;
    dlg.domodal();这个是在DLL中用的,我要在自己的程序中引用这个,就是直接用这个类,
    要包含着个头文件的话就是有问题,该怎么办?
      

  5.   

    看了一下以前做的你可以在你的dll对话框类中,把那个{EMUE =IDD_DIALOG1删掉,然后不是构造函数中有这样的东西吗dlg::dlg(CWnd* pParent /*=NULL*/)
    : CDialog(dlg::IDD, pParent)把这个dlg::IDD
    删掉,自己再新建一个构造函数你自己的构造函数里面有个LPCTSTR lpszTemplateName的参数,作为对话框的id传递进去,就是dlg::dlg(LPCTSTR lpszTemplateName,CWnd* pParent /*=NULL*/)
    :CDialog(lpszTemplateName, pParent)这样你构造对话框类的时候,只要记得把资源代进去就可以了
      

  6.   

    不要直接导出CDlg类,建立一个专门的导出类class CDlg;   // 类声明// .h File
    class AFX_EXT_CLASS CImportDlg
    {
    public:
        void CreateDlg();
    private:
         CDlg m_dlg;
    }// .Cpp File
    void CImportDlg::CreateDlg()
    {
      m_dlg.Creat(...) // 我记不清参数形式了
    }
    // use ...
    CImportDlg dlg;
    dlg.Create(...);