#include <gdiplus.h> // 包含头文件
#pragma comment(lib,"Gdiplus.lib") // 链接库,当然也可以在工程配置中引入
二:GDI+初始化和关闭
初始化:在程序启动的函数中 一般在App类的InitInstance函数
Gdiplus::GdiplusStartup( &gdiplusToken , &gdiplusStartupInput , NULL ) ; // GDI+初始化
关闭:在程序关闭的函数中 一般在App类的ExitInstance函数
Gdiplus::GdiplusShutdown( gdiplusToken ) ; //关闭GDI+
注意:对于ActiveX控件的项目工程,由于GDI初始化问题,在DLL或者ACTIVEX工程中不能放在App类中,放在其他位置比如窗口类或者其他UI显示的地方。
如果放在App类中,就会导致vs2010编译一直等待,regsvr32.exe注册控件的时候执行不下去,感觉vs2010编译‘死’在那里了,但事实上这个控件文件ocx已经生成完毕,如果使用该控件,就会导致使用者(比如Excel)无法退出进程(没有界面,但从进程管理器能够看到进程)。这个问题导致我花费了一天时间,翻开以前写的MFC程序代码,对比也没有发现也什么不一样的地方,最后通过代码一行一行加入,才定位到‘Gdiplus::GdiplusShutdown( gdiplusToken ) ;’函数的位置导致的。
如何在VS2010中的MFC中配置GDI+
首先,VS2010中已经有GDI+SDK包的,不需要额外下载
1:在stdafx.h文件中加入下面3行代码,添加相应的头文件和库
#pragma comment( lib, "gdiplus.lib" )
#include "gdiplus.h"
using namespace Gdiplus;
2:定义一个全局变量 ULONG_PTR m_gdiplusToken;
其中,ULONG_PTR是一个DWORD数据类型,该成员变量用来保存GDI+被初始化后在应用程序中的GDI+标识,以便能在应用程序退出后,引用该标识来调用Gdiplus:: GdiplusShutdown来关闭GDI+。
3:使用GDI+函数前,先,最好放在OnInitDialog()中
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
4:使用完GDI+函数后,需要卸载GDI+
Gdiplus::GdiplusShutdown(m_gdiplusToken);
这就是基本的配置了