当前位置:首页 > 多媒体相关

实现MFC扩展DLL中导出类和对话框



热门问答:
  • 【java.sql.Date 实用方法】 [详细内容]
  • ●●●●●●●●如何破解ASA7.0数据库密码,哪位可以帮我●●●●●●●● [详细内容]
  • 大家讨论一下色情图像识别系统, 原理是什么东西呀?简单的图像模糊运算吗? [详细内容]
  • 为什么 .ini 配置文件在写入时,只写入第一条,后面的都没写入? [详细内容]
  • 结构数据的网络传输 [详细内容]

  • 推荐阅读
      · 摄像手机完全接触 使用中的注意事项
        摘要:一、不要偷拍   由于摄像手机小巧玲珑,在不使用闪光灯的情况下,照相比较隐蔽,这就给某些别有用心的人提供了方便,致使有些人买摄像手机用来偷拍。笔者认为,此举十分不妥。偷拍不但是一种很不道德的行为,而且还是一种违反法律的行为,目前我国深圳市人大代表向深圳市公安局递交了一份......
      · 自欺欺人?amd认为迅驰品牌不怎么样新闻新品
        摘要:  据称amd做了一个很全面的市场调查,得出了一个比较惊人的结论:其实intel的迅驰作为一个品牌也不是那么深入人心。·美丽接触海畅span芯r280靓图欣赏·入门用户必看!酷睿双核配置推荐·最低79911款x1650xt全面阻击76gt·难得一见 精英高端板ka3现身市场·“日光魔盒”解决3g手机用电尴尬  据称amd做了一个很全面的市场调查,得出了一个比较惊人的结论:其实intel的迅驰作为一个品牌也不是那么深入......

    正文
      如果要编写模块化的软件,就要对对动态链接库(dll)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到dll中,下面就从一个简单的例子讲起,如何实现mfc扩展dll中导出类和对话框。


      一、创建mfc扩展dll

      步骤:

      运行visual studio 6.0->file->new...->projects;

      选择mfc appwizard(dll),在右边project name下输入exportclass,单击“下一步”;

      选择mfc extension dll (using share mfc dll) 单击“finish”;

      以上完成建立扩展dll的框架,下面接着建立输出类:

      insert-> new class...在打开的对话框中,"class type" 选择"generic class",class name 中输入cdogclass(当然你可以用其它的名称,我喜欢小狗,所有用它了,在"base class"下输入cobject,然后"ok";为类添加两个测试用的变量 int m_nnum;cstring m_sdata;完全的类信息如下:

      dogclass.h头文件:


      编辑dogclass.h头文件修改下面一行;class afx_ext_class cdogclass : public cobject

      以上完成类的建立,下面建立输出对话框;

      insert-> resouce...新建立一个对话框,添加两个编辑框idc_edit1,idc_edit2,然后建立cdlgdog对话框类并为两编辑框添加int m_nnum和cstring m_sdata的变量。

      在dogclass.cpp的#include "dogclass.h"下加入#include "dlgdog.h"

      在dogclass类中添加int showdlg();函数用来调用对话框,并在int cdogclass::showdlg()中添加如下代码:


      然后编译dll,会发现有几个错误,不用怕,好解决的。

      首先,去掉dlgdog.cpp中的 #include “\ add additional includes here”这一行;其次,在stdax.h中加入include "resource.h",再编译,ok。

      二、建立dll 测试程序

      步骤:

      新建一个基于对话框的mfc应用程序,添加一按钮idc_button1,并在按钮事件中添加如如下代码:


      从exportclass文件目录拷贝dogclass.h和exportclass.lib文件到测试程序目录下;

      在testexportclassdlg.cpp中加入#include “dogclass.h”行;往连接程序的导入库中添加exportclass.lib,在vs的project->settings下的setting for选择all configuration.,然后在下面的页面object/library conttrol中加入exportclass.lib;

      别忘了把exportclass.dll复制到系统目录或当前应用程序目录;然后编译就ok了。

    讨论区

    Login