MFC 对话框中设置GDI+环境

 

 

1  建立GdiPlusNew.h  代替 Gdiplus.h   以解决NEW 问题

//// Ensure that GdiPlus header files work properly with MFC DEBUG_NEW and STL header files. 

#define iterator _iterator 

#ifdef _DEBUG 

namespace Gdiplus 
{ 
	namespace DllExports 
	{ 
#include "GdiplusMem.h" 
	}; 

#ifndef _GDIPLUSBASE_H 
#define _GDIPLUSBASE_H 
	class GdiplusBase 
	{ 
	public: 
		void (operator delete)(void* in_pVoid) 
		{ 
			DllExports::GdipFree(in_pVoid); 
		} 

		void* (operator new)(size_t in_size) 
		{ 
			return DllExports::GdipAlloc(in_size); 
		} 

		void (operator delete[])(void* in_pVoid) 
		{ 
			DllExports::GdipFree(in_pVoid); 
		} 

		void* (operator new[])(size_t in_size) 
		{ 
			return DllExports::GdipAlloc(in_size); 
		} 

		void * (operator new)(size_t nSize, LPCSTR lpszFileName, int nLine) 
		{ 
			return DllExports::GdipAlloc(nSize); 
		} 

		void operator delete(void* p, LPCSTR lpszFileName, int nLine) 
		{ 
			DllExports::GdipFree(p); 
		} 

	}; 
#endif // #ifndef _GDIPLUSBASE_H 
} 
#endif // #ifdef _DEBUG 

#include "gdiplus.h" 

#undef iterator 

//// Ensure that Gdiplus.lib is linked. 
#pragma comment(lib, "gdiplus.lib") 





2 stdafx.h 中添加新建的头文件 GdiPlusNew.h

 

#include "GdiPlusNew.h"
 using namespace Gdiplus;

 

3 在XXXAPP类中添加成员变量

 

public:

	GdiplusStartupInput gdiplusStartupInput;
	ULONG_PTR gdiplusToken;


4 在XXXAPP的初始化函数中,初始化

 

	SetRegistryKey(_T("应用程序向导生成的本地应用程序"));


	//添加的初始化GDI+
	GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);


5 重载APP的析构函数,并在其中关闭GDI+

 

CGraphicApp::~CGraphicApp()
{
	GdiplusShutdown(gdiplusToken);

}


这样便可在工程中使用GDI+了。

你可能感兴趣的:(MFC 对话框中设置GDI+环境)