最近我刚刚学习dll编程,在学习MFC规则dll时,遇到了问题:
写出来的dll不能正常运行,具体劳烦大家看我的具体思路:
我先新建一个MFC AppWizard(Dll)项目,完成。
插入一个新对话框,根据提示新建一个对话框类(CDllDlg),确定。
在项目工程中新加入一个文件(exports.cpp)
//exports.cpp文件实现如下:
#include "StdAfx.h"
#include "DllDlg.h"
extern "C" __declspec(dllexport) void ShowDlg(void);
void ShowDlg(void)
{
CDllDlg dllDialog;
MessageBox(0,"coorect!",0,0); //在此设置这个的的目的是为了检测代码是否执行到这里…测试结果是确实执行了!
dllDialog.DoModal();
//但是调用dll的时候这里无法显示出来(dll的调用绝对没错)……怎么办啊
}
(资源标号未冲突)
该怎么正确显示dll中的对话框呢???
劳烦高手解答

解决方案 »

  1.   

    下载这本书以及它的源码。《VC++动态链接库(dll)编程深入浅出.pdf》
      

  2.   

    http://blog.csdn.net/fengbingchun/article/details/6081632
      

  3.   

    http://download.csdn.net/source/1495691
      

  4.   

    可能是模块资源切换的问题,只要在DoModal调用前加一句AFX_MANAGE_STATE(AfxGetStaticModuleState())
    具体解释可参见
    http://wenku.baidu.com/view/41de931f59eef8c75fbfb3c4.html
      

  5.   

    void ShowDlg(void)
    {
        // 在导出函数的入口处加入这个
        AFX_MANAGE_STATE(AfxGetStaticModuleState())
    CDllDlg dllDialog;
    MessageBox(0,"coorect!",0,0); //在此设置这个的的目的是为了检测代码是否执行到这里…测试结果是确实执行了!
    dllDialog.DoModal();
    //但是调用dll的时候这里无法显示出来(dll的调用绝对没错)……怎么办啊
    }