文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>编写MFC的扩展动态库导出类

编写MFC的扩展动态库导出类

时间:2010-06-29  来源:laiboy

编写MFC的扩展动态库导出类

忙碌命

http://blog.csdn.net/laiboy

http://laiboy.cublog.cn

 

概述

在很多少第三方界面库,如XTreme,BCG等,都会提供动态库链接选项,让界面库作为动态加载选择.这些库都比较大,但是我们只是想要一小部分功能,这就需要涉及我们只需将MFC一部分类作为基类,封装成动态库,而不需要封装所有的类。

例如,我实现一个布局元素可自动调整的对话框,为了重用,我将基封装成动态库,有可能我灵感一动,又增加一些新的功能,做成了一个通用的扩展库。

实现

我们可样这样导出一个类:

classs AFX_CLASS_EXPORT CDialogEx : public CDialog

{

......

}

编译没有问题,调用这个基类动态库的时候。

 

GetMessageMap这个类成员不能链接,很简单,因为在MFC的 afxv_dll.h中,AFX_CLASS_EXPORT被定义为 __declspec( export ),还有一个 AFX_CLASS_EXPORT,在引用这个自定义的扩展类的时候,认为GetMessageMap是不导出的,因此,需要重新声明 __declspec( .... ).

#ifdef MFC_SELF_CLASS_LIB

    #define MFC_CLASS_EX_API __declspec( dllexport )

#else

    #define MFC_CLASS_EX_API __declspec( dllimport )

#endif // MFC_SELF_CLASS_LIB

上述的基类声明可以改成如下

 

classs AFX_CLASS_EX_API CDialogEx : public CDialog

{

......

}

重新编译即可通过.动态库的工程需要定MFC_SELF_CLASS_LIB

这样使用库的程序不需要定义任何宏.

我在CDialogEx这个库中增加布局控制,任何派生这个CDialogEx的对话框类,就可以实现控件的自动排布,不再像原来的的对话框类那样需要自已调整对话框的控件.使用类的方法和原来的MFC的工程一样,将演示Demo工程中的CDialog都改成CDialogEx的派生,并链接LIB库,代码很少改动,就实现了一个自动调整控件布局的对话框.

 

 

当然,有源码演示.代码可能随意修改!但是请保留原作者信息.

总结

这个看来不是什么难事,但是,越是简单的东西越是重要,将MFC的类作为基类,也是实现MFC封装应用的类似插件应用的程序和扩展MFC库的重要手段之一.以前我写的插件框架,也是这样的封装模块技术.希望这篇拙作高手们不要拍砖!!!

 

文件: MFC Extention Dll.rar
大小: 173KB
下载: 下载
 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载