在《bmp位图操作函数和类 》中的dll中有一个接口类,用来扩展支持图像格式。头文件如下:
//
***************************************************************
// JKs_CDibInterface version: 1.0 date:
// -------------------------------------------------------------
// 图像库扩展接口
// -------------------------------------------------------------
// Copyright (C) 2007 - All Rights Reserved
// ***************************************************************
//
// ***************************************************************
#if !defined(_JKS_CDIBINTERFACE_HPP__)
#define _JKS_CDIBINTERFACE_HPP__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#if !defined(_JKSDIBBUILD)
#define _JKSDIBBUILD
#ifdef _DEBUG
#pragma comment(lib,"jksDibD.lib")
#pragma message("jksDibD.lib is linked. ")
#else
#pragma comment(lib,"jksDib.lib")
#pragma message("jksDib.lib is linked. ")
#endif
#endif
#ifndef __AFXWIN_H__
#pragma message("This is not supported by MFC.Can't use this Lib. ")
#endif
#ifdef DIB_DLLEXPORT
#define CLASS_DECL_CDIBINTERFACE __declspec(dllexport)
#else
#define CLASS_DECL_CDIBINTERFACE __declspec(dllimport)
#endif
#include < afxtempl.h >
namespace jks
/**/ //
... {
class CDib;
class CLASS_DECL_CDIBINTERFACE CDibInterface
...{
public:
CDibInterface() :m_pDib(NULL),m_pExt(NULL),m_nExt(0) ...{m_PtrList.AddTail(this); }
virtual ~CDibInterface();
CDibInterface(CDib *pDib):m_pDib(pDib)
...{ m_PtrList.AddTail(this); }
void Release() ...{delete this;}
/**//// Get CDib
virtual CDib * GetDib() ...{return m_pDib;}
/**//// Set CDib
virtual BOOL SetDib(CDib *pDib);
/**//// filename extension ,必须复写
/// pp用于指定所支持的文件类型的扩展名数组,不带"."
/// n支持的文件扩展名个数
virtual char** GetEXT(int& nExt)=0;
/**//// Load file
virtual BOOL Load(LPCTSTR lpstrFileName) =0;
/**//// Save file
virtual BOOL Save(LPCTSTR lpstrFileName, CDib* pDib) =0;
/**////只要创建一个派生类的对象,系统就知道了
static CPtrList m_PtrList;
protected:
CDib* m_pDib;
char** m_pExt;
int m_nExt;
};
/**//************************************
//接口函数,dll里导出派生类对象,或者在def中导出序号为1
CDibInterface* GetDibInterfaceObj()
{
pObj = new CDibInterface();
return pObj;
}
*************************************/
/**///
} //
#endif // !defined(AFX_JKS_CDIBINTERFACE_HPP__0A3AF2B0_D836_4592_B72E_E68D6727FE21__INCLUDED_)
// JKs_CDibInterface version: 1.0 date:
// -------------------------------------------------------------
// 图像库扩展接口
// -------------------------------------------------------------
// Copyright (C) 2007 - All Rights Reserved
// ***************************************************************
//
// ***************************************************************
#if !defined(_JKS_CDIBINTERFACE_HPP__)
#define _JKS_CDIBINTERFACE_HPP__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#if !defined(_JKSDIBBUILD)
#define _JKSDIBBUILD
#ifdef _DEBUG
#pragma comment(lib,"jksDibD.lib")
#pragma message("jksDibD.lib is linked. ")
#else
#pragma comment(lib,"jksDib.lib")
#pragma message("jksDib.lib is linked. ")
#endif
#endif
#ifndef __AFXWIN_H__
#pragma message("This is not supported by MFC.Can't use this Lib. ")
#endif
#ifdef DIB_DLLEXPORT
#define CLASS_DECL_CDIBINTERFACE __declspec(dllexport)
#else
#define CLASS_DECL_CDIBINTERFACE __declspec(dllimport)
#endif
#include < afxtempl.h >
namespace jks
/**/ //
... {
class CDib;
class CLASS_DECL_CDIBINTERFACE CDibInterface
...{
public:
CDibInterface() :m_pDib(NULL),m_pExt(NULL),m_nExt(0) ...{m_PtrList.AddTail(this); }
virtual ~CDibInterface();
CDibInterface(CDib *pDib):m_pDib(pDib)
...{ m_PtrList.AddTail(this); }
void Release() ...{delete this;}
/**//// Get CDib
virtual CDib * GetDib() ...{return m_pDib;}
/**//// Set CDib
virtual BOOL SetDib(CDib *pDib);
/**//// filename extension ,必须复写
/// pp用于指定所支持的文件类型的扩展名数组,不带"."
/// n支持的文件扩展名个数
virtual char** GetEXT(int& nExt)=0;
/**//// Load file
virtual BOOL Load(LPCTSTR lpstrFileName) =0;
/**//// Save file
virtual BOOL Save(LPCTSTR lpstrFileName, CDib* pDib) =0;
/**////只要创建一个派生类的对象,系统就知道了
static CPtrList m_PtrList;
protected:
CDib* m_pDib;
char** m_pExt;
int m_nExt;
};
/**//************************************
//接口函数,dll里导出派生类对象,或者在def中导出序号为1
CDibInterface* GetDibInterfaceObj()
{
pObj = new CDibInterface();
return pObj;
}
*************************************/
/**///
} //
#endif // !defined(AFX_JKS_CDIBINTERFACE_HPP__0A3AF2B0_D836_4592_B72E_E68D6727FE21__INCLUDED_)