在VC++动态链接库编程之MFC扩展DLL的操作方法

       MFC是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的WindowsAPI函数,并且包含一个应用程序框架,以减少应用程序开发人员工作量。今天小编就带大家来认识一下,在VC++动态链接库编程之MFC扩展DLL的操作方法。

  一、异同之处

  作为一名专业的程序员,大家都应该听说过MFC规则DLL以及MFC扩展DLL这两者吧。大家知道这两者有什么的相同点以及不同点吗?首先小编先给大家来说一下不同之处吧,它们之间不同的地方就在于MFC扩展DLL以及应用程序的接口通通都可以是MFC的。而它们之间相同的地方就是在这两种DLL的内部都是可以使用MFC类库的。那么MFC扩展DLL有什么含义呢?具体的含义就是在于它是MFC的扩展,它的主要功能就是实现由现有的MFC库类中派生出可重用的类。大家在进行MFC扩展DLL可以直接使用MFC动态链接库版本,因为仅仅只有使用共享MFC版本所生成的MFC可执行文件(规则DLL或者是应用程序)才可以使用MFC扩展DLL的。

  那么从前面的教程中,相信大家都应该知道了一点,那就是MFC规则DLL(DLL是DynamicLinkLibrary的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。)被MFC向导自动添加了一个CWinapp的对象,然而在MFC扩展DLL则是不包含这一个对象的,它仅仅只是被自动添加了DllMain函数而已。对于MFC扩展DLL这一个部分,开发人员一定要在DLL的DllMain函数中添加结束代码以及初始化才可以的。

  二、处理方法

  在这里,小编列出了一个表格。在这个表格中,我们可以看到有DLL对于DllMain入口函数的处理方法,分别有以下三种不同的方式。具体的处理方法如下:

在VC++动态链接库编程之MFC扩展DLL的操作方法_VC++_编程代码_动态链接库_课课家

  ①MFC扩展DLLMFCDLL向导生成DllMain函数

  ②MFC规则DLLCWinApp对象的ExitInstance以及InitInstance

  ③非MFCDLL编程者提供DllMain函数

  ④DLL类型入口函数

  对于MFC扩展DLL这一个部分,系统会自动在工程中添加一些宏,具体的宏如下图所示:其实这一些宏为我们编写应用程序以及DLL提供了极大的方便。就比如说:类似于AFX_EXT_CLASS、AFX_EXT_DATA以及AFX_EXT_API这样的宏,在应用程序以及DLL里面将拥有一些不一样的定义,这完全是取决于_AFXEXT宏是不是已经被定义了。这样子的话,就是使得在应用程序以及DLL里面,只需要使用统一的一个宏那样就可以表示出输入以及输出的不一样的意思了。在应用程序中,则表示输入的意思(因为_AFXEXT并没有被定义)。相反在DLL中,则表示输出的意思(那是因为_AFXEXT已经被定义,一般情况下都是在编译器的标识参数中将/D_AFXEXT指定出来的);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个功能强大的MFC界面处理扩展库:CJ60Lib 这是从网上搜集的一个扩展库,把它分享给大家! 简介: CJ60Lib是基于MFC基础之上的一个扩展库,主要是改进MFC的下述类: CCJButton - ( CJButton.cpp and CJButton.h )对CButton的改进。 CCJComboBox - ( CJComboBox.cpp and CJComboBox.h )对CComboBox的改进。 CCJControlBar - ( CJControlBar.cpp and CJControlBar.h )对CControlBar的改进。 CCJFrameWnd - ( CJFrameWnd.cpp and CJFrameWnd.h ) CCJMDIFrameWnd - ( CJMDIFrameWnd.cpp and CJMDIFrameWnd.h ) CCJDockBar - ( CJDockBar.cpp and CJDockBar.h ) 这些类重载了缺省的主框架布局,以增加3D效果到工具条。为了使用这些类,仅将 CFrameWnd 改为 CCJFrameWnd,其中,CMainFrame 包含在 Mainfrm.h文件中,(对于MDI,采用CCJMDIFrameWnd)。 CCJOutlookBar - ( CJOutlookBar.cpp and CJOutlookBar.h )新增类,用于实现Outlook中的工具条。 CCJPagerCtrl - ( CJPagerCtrl.cpp and CJPagerCtrl.h )新增类,用于设置标签视或者对话框。 CCJTabCtrlBar - ( CJTabCtrlBar.cpp and CJTabCtrlBar.h )新增类。 CCJToolBar - ( CJToolBar.cpp and CJToolBar.h )对CToolBar类的改进。 CCoolMenuManager -( CoolMenu.cpp, Emboss.cpp and CoolMenu.h ) CSubclassWnd -( Subclass.cpp and Subclass.h ) 新增类,用于改进已有的菜单。 CFlatToolBar - ( FlatBar.cpp and FlatBar.h ) Obsolete with VC 6.0 CModuleVersion - ( ModulVer.cpp and ModulVer.h ) 这是CCJToolBar的基类。 CCoolBar, CRebarInfo - ( CoolBar.cpp and CoolBar.h ) Obsolete with VC 6.0 新增类,用于实现Internet Explorer 4风格的工具条。 CHyperLink - ( HyperLink.cpp and HyperLink.h ) 超链接控件。 使用方法: 在Project Settings中选择General标签,Microsoft Foundation Class设置为 Use MFC in a shared DLL。 在Project Settings中选择Link标签,设置Category为Input,增加../Lib到Additional Library Path。 在Link标签中,改变Category为General,Output Name (所有配置)设置为../Lib。 选择C/C++标签,改变Category为Preprocessor,增加../Include到Additional Include Directories. 最后一步是添加下面两行代码到StdAfx.h头文件中: #define MFCX_PROJ #include 为了能静态链接到CJ60Lib,需要做下面修改: 在project settings对话框中,选择General标签,确保Microsoft Foundation Class设置为Use MFC in a static library。 添加下面代码到StdAfx.h 头文件,其将使库静态链接到应用程序: #define MFCXLIB_STATIC #define MFCX_PROJ #include
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值