⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 magickimage.h

📁 下载来的一个看图软件的源代码
💻 H
字号:
// MagickImage.h : Declaration of the CMagickImage#ifndef __MAGICKIMAGE_H_#define __MAGICKIMAGE_H_#include "resource.h"       // main symbols#include <asptlb.h>         // Active Server Pages Definitions#include <mtx.h>// Needed for stdio FILE#include <stdio.h>// Needed for time_t#include <time.h>// Needed for doing direct memory allocation//#include <malloc.h>// Needed for off_t on Unix and Windows#include <sys/types.h>// Needed by the convert and combine code#include <math.h>// Forward declarations for iostream classes#include <iosfwd>// Let's put in the vector class to hold lists of args//#pragma warning(disable : 4530) // stop warning about exception handling#include <vector>#undef PACKAGE#undef VERSION#include <magick/api.h>#include <nt_base.h>#undef inline // Remove possible definition from config.h#undef class#undef setjmp#undef longjmp#include <setjmpex.h>typedef std::vector<CComVariant> VarVector;typedef CComEnumOnSTL<IEnumVARIANT, &IID_IEnumVARIANT, VARIANT, _Copy<VARIANT>, VarVector> VarEnum;typedef ICollectionOnSTLImpl<IMagickImage, VarVector, VARIANT, _Copy<VARIANT>, VarEnum> IMagickImageCollection;typedef IDispatchImpl<IMagickImageCollection, &IID_IMagickImage, &LIBID_IMAGEMAGICKOBJECTLib> _baseMagickImage;const TCHAR chQuote = _T('\'');const TCHAR chEquals = _T('=');const TCHAR chRightBracket = _T('}');const TCHAR chLeftBracket = _T('{');/////////////////////////////////////////////////////////////////////////////// CMagickImageclass ATL_NO_VTABLE CMagickImage : 	public CComObjectRootEx<CComMultiThreadModel>,	public CComCoClass<CMagickImage, &CLSID_MagickImage>,	public IObjectWithSiteImpl<CMagickImage>,	public ISupportErrorInfo,	public IConnectionPointContainerImpl<CMagickImage>,	public IDispatchImpl<IMagickImageCollection, &IID_IMagickImage, &LIBID_IMAGEMAGICKOBJECTLib>{public:	CMagickImage();	~CMagickImage();public:DECLARE_REGISTRY_RESOURCEID(IDR_MAGICKIMAGE)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CMagickImage)	COM_INTERFACE_ENTRY(IMagickImage)	COM_INTERFACE_ENTRY(IDispatch)	COM_INTERFACE_ENTRY(ISupportErrorInfo)	COM_INTERFACE_ENTRY(IConnectionPointContainer)	COM_INTERFACE_ENTRY(IObjectWithSite)END_COM_MAP()BEGIN_CONNECTION_POINT_MAP(CMagickImage)END_CONNECTION_POINT_MAP()// ISupportsErrorInfo	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);// IMagickImagepublic:	STDMETHOD(Convert)(/*[in,out]*/ SAFEARRAY **pArrayVar, /*[out, retval]*/ VARIANT *pVar2);	STDMETHOD(Composite)(/*[in,out]*/ SAFEARRAY **pArrayVar, /*[out, retval]*/ VARIANT *pVar2);	STDMETHOD(Mogrify)(/*[in,out]*/ SAFEARRAY **pArrayVar, /*[out, retval]*/ VARIANT *pVar2);	STDMETHOD(Montage)(/*[in,out]*/ SAFEARRAY **pArrayVar, /*[out, retval]*/ VARIANT *pVar2);	STDMETHOD(Identify)(/*[in,out]*/ SAFEARRAY **pArrayVar, /*[out, retval]*/ VARIANT *pVar2);	STDMETHOD(Remove)(/*[in]*/ VARIANT varIndex);	STDMETHOD(Add)(/*[in,out]*/ SAFEARRAY **pArrayVar, /*[out, retval]*/ VARIANT *pVar2);  // ICollectionOnSTLImpl<> supplies these, but we override and pass through	STDMETHOD(get_Item)(/*[in]*/ VARIANT varIndex, /*[out, retval]*/ VARIANT *pVar);	STDMETHOD(get__NewEnum)(/*[out, retval]*/ LPUNKNOWN *pVal);	STDMETHOD(get_Count)(/*[out, retval]*/ long *pVal);	STDMETHOD(get_Messages)(/*[out, retval]*/ VARIANT *pVar);	STDMETHOD(OnStartPage)(IUnknown* IUnk);	STDMETHOD(OnEndPage)();  // Utility routines not called by COM interfaces  HRESULT AllocateArgs(int iArgs);  HRESULT ReAllocateArgs(int iArgs);  void DeleteArgs(void);  char **GetArgv(void);  char **GetArgvT(void);  int GetArgc(void);  void EmptyArgs(void);  HRESULT AddArgs(VARIANTARG *arg);  HRESULT AddArgs(BSTR arg);  HRESULT AddArgs(LPTSTR arg);  HRESULT ProcessArgs(int iFunction,SAFEARRAY **pArrayVar);  HRESULT DispatchToImage(IDispatch* pdisp,CComObject<CMagickImage>** ppMagickImage);  HRESULT UnknownToImage(IUnknown* pdisp,CComObject<CMagickImage>** ppMagickImage);  HRESULT Execute(unsigned int (*func)(ImageInfo *image_info,    const int argc,char **argv,char **text,ExceptionInfo *exception),      char **text,ImageInfo *info,ExceptionInfo *exception);	HRESULT Perform(unsigned int (*func)(ImageInfo *image_info,    const int argc,char **argv,char **text,ExceptionInfo *exception),      SAFEARRAY **pArrayVar,VARIANT *pVar2,ExceptionInfo *exception);  LPTSTR StrChr(LPTSTR lpsz, TCHAR ch);public:	CComPtr<IRequest> m_piRequest;					//Request Object	CComPtr<IResponse> m_piResponse;				//Response Object	CComPtr<ISessionObject> m_piSession;			//Session Object	CComPtr<IServer> m_piServer;					//Server Object	CComPtr<IApplicationObject> m_piApplication;	//Application Object	BOOL m_bOnStartPageCalled;						//OnStartPage successful?	BOOL m_bOnFirstTime;						//Flag to indicate first call?private:  char **m_argv;  char **m_argv_t;  int m_argc;  int m_argvIndex;	LPTSTR m_pchCur;  char warning_text[MaxTextExtent];  char error_text[MaxTextExtent];  int error_number;  static void warninghandler(const ExceptionType warning,const char *message,    const char *qualifier);  static void errorhandler(const ExceptionType error,const char *message,    const char *qualifier);  static void fatalerrorhandler(const ExceptionType error,const char *message,    const char *qualifier);};const int nDefaultArgumentSize = 128;//// This routine convert a wide character string to ANSI and stores the new// string in a buffer allocated by the new operator//#define MAKE_WIDEPTR_FROMANSI(ptrname, ansistr) \    long __l##ptrname = (lstrlen(ansistr) + 1) * sizeof(WCHAR); \    void * __TempBuffer##ptrname = (void *) new char [ __l##ptrname ]; \    MultiByteToWideChar(CP_ACP, 0, ansistr, -1, (LPWSTR)__TempBuffer##ptrname.GetBuffer(), __l##ptrname); \    LPWSTR ptrname = (LPWSTR)__TempBuffer##ptrname//// This routine converts an ANSI string to a wide character string in a new// buffer area allocated using the new operator// We allocate lstrlenW(widestr) * 2 because its possible for a UNICODE char// to map to 2 ansi characters this is a quick guarantee that enough space// will be allocated.//#define MAKE_ANSIPTR_FROMWIDE(ptrname, widestr) \    long __l##ptrname = (lstrlenW(widestr) + 1) * 2 * sizeof(char); \    void * __TempBuffer##ptrname = (void *) new char [ __l##ptrname]; \    WideCharToMultiByte(CP_ACP, 0, widestr, -1, (LPSTR)__TempBuffer##ptrname, __l##ptrname, NULL, NULL); \    LPSTR ptrname = (LPSTR)__TempBuffer##ptrname#define MAKE_ANSIPTR_FROMWIDE_2(ptrname, widestr, wlen) \    long __l##ptrname = (wlen + 1) * 2 * sizeof(char); \    void * __TempBuffer##ptrname = (void *) new char [ __l##ptrname]; \    WideCharToMultiByte(CP_ACP, 0, widestr, -1, (LPSTR)__TempBuffer##ptrname, __l##ptrname, NULL, NULL); \    LPSTR ptrname = (LPSTR)__TempBuffer##ptrname//// This routine is used to make a copy of an existing ANSI string//#define MAKE_COPY_OF_ANSI(ptrname, ansistr) \    long __l##ptrname = (lstrlen(ansistr) + 1); \    void * __TempBuffer##ptrname = (void *) new char [ __l##ptrname ]; \    lstrcpyn((LPSTR)__TempBuffer##ptrname, (LPCSTR)ansistr, __l##ptrname); \    LPSTR ptrname = (LPSTR)__TempBuffer##ptrname#endif //__MAGICKIMAGE_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -