WEB开发网
开发学院软件开发VC VC++动态链接库(DLL)编程深入浅出(四) 阅读

VC++动态链接库(DLL)编程深入浅出(四)

 2007-03-15 21:48:07 来源:WEB开发网   
核心提示: 由于MFC扩展DLL导出函数和变量的方式与其它DLL没有什么区别,我们不再细致讲解,VC++动态链接库(DLL)编程深入浅出(四)(2),下面直接给出一个MFC扩展DLL的创建及在应用程序中调用它的例子,6.1 MFC扩展DLL的创建下面我们将在MFC扩展DLL中导出一个按钮类CSXBut

由于MFC扩展DLL导出函数和变量的方式与其它DLL没有什么区别,我们不再细致讲解。下面直接给出一个MFC扩展DLL的创建及在应用程序中调用它的例子。

6.1 MFC扩展DLL的创建

下面我们将在MFC扩展DLL中导出一个按钮类CSXButton(扩展自MFC的CButton类),类CSXButton是一个用以取代 CButton的类,它使你能在同一个按钮上显示位图和文字,而MFC的按钮仅可显示二者之一。类CSXbutton的源代码在Internet上广泛流传,有很好的“群众基础”,因此用这个类来讲解MFC扩展DLL有其特殊的功效。

MFC中包含一些宏,这些宏在DLL和调用DLL的应用程序中被以不同的方式展开,这使得在DLL和应用程序中,使用统一的一个宏就可以表示出输出和输入的不同意思:

// for data
#ifndef AFX_DATA_EXPORT
#define AFX_DATA_EXPORT __declspec(dllexport)
#endif
#ifndef AFX_DATA_IMPORT
#define AFX_DATA_IMPORT __declspec(dllimport)
#endif
// for classes
#ifndef AFX_CLASS_EXPORT
#define AFX_CLASS_EXPORT __declspec(dllexport)
#endif
#ifndef AFX_CLASS_IMPORT
#define AFX_CLASS_IMPORT __declspec(dllimport)
#endif
// for global APIs
#ifndef AFX_API_EXPORT
#define AFX_API_EXPORT __declspec(dllexport)
#endif
#ifndef AFX_API_IMPORT
#define AFX_API_IMPORT __declspec(dllimport)
#endif
#ifndef AFX_EXT_DATA
#ifdef _AFXEXT
  #define AFX_EXT_CLASS    AFX_CLASS_EXPORT
  #define AFX_EXT_API     AFX_API_EXPORT
  #define AFX_EXT_DATA    AFX_DATA_EXPORT
  #define AFX_EXT_DATADEF
#else
  #define AFX_EXT_CLASS    AFX_CLASS_IMPORT
  #define AFX_EXT_API     AFX_API_IMPORT
  #define AFX_EXT_DATA    AFX_DATA_IMPORT
  #define AFX_EXT_DATADEF
#endif
#endif

导出一个类,直接在类声明头文件中使用AFX_EXT_CLASS即可,以下是导出CSXButton类的例子:

上一页  1 2 3 4  下一页

Tags:VC 动态 链接

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接