VC2005使用GDI+库报错的解决方法

如果是WIN32 SDK编程即便您把头文件,库,命名空间都弄好了但是依然会一大串莫名其妙的错误

只要把 stdafx.h 中的宏定义
#define WIN32_LEAN_AND_MEAN

把这一条给注释掉就可以了

因为这一条的作用是:从 Windows 头中排除极少使用的资料

而这极少使用的资料正是GDI+需要的……

害了搞了那么久!!

                             http://hi.baidu.com/baixudong/

-----------------------------------------------------------------------------------------------------------------------------

以下内容是使用MFC的

1、GDI+程序设计步骤:
(1)、在项目中引入GDI+的头文件,使用GDI+的命名空间。
(2)、初始化GDI+系统资源。
(3)、使用完毕之后,释放GDI+所使用的资源。
(4)、在编译时加入GDIplus.Lib库文件。
实例步骤:
(1)、在Visual C++.NET的IDE中,选择“文件”|“新建”|“项目”命令,选择MFC应用程序,在“名称”文本框肿输入项目名称GDIPlusDemo。在随即出现的“MFC应用程序向导”对话框肿,选择程序的类型为“单文档”。
(2)、在程序中使用GDI+命名空间
GDI+中使用了自己的命名空间,可以从GDIplus.h头文件中看出GDI+对命名空间的定义,并添加GDI+运行库(GDIplus.LIB)支持。具体方法是修改stdafx.h文件,在该头文件的结尾处加入下列的代码:
//引入GDI+头文件
#include <GdiPlus.h>
//使用GDI+的命名空间
using namespace Gdiplus;
#pragma comment( lib, "gdiplus.lib" )
(3)、GDI+资源的初始化与销毁
在使用GDI+的资源之前,应该通过GdiplusStartup(启用GDI-资源)函数进行GDI+系统资源的初始化操作,而在程序结束前,应该通过GdiplusShutdown(关闭GDI+资源)函数进行GDI+资源的销毁操作。这亮相工作,可以在CGDIPlusDemoApp类的InitInstance(初始化进程)函数喝CGDIPlusDemoApp类的析构函数中进行。
//全局变量,表明对GDI+的一个引用
ULONG_PTR gdiplusToken;
//CGDIPlusDemoApp初始化
BOOL CGDIPlusDemoApp::InitInstance()
{
InitCommonControls();
//GDI+系统资源的初始化
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);
CWinApp::InitInstance();

// 初始化OLE 库
if (!AfxOleInit())
{
……
}
}
int CGDIPlusDemoApp::ExitInstance()
{
// TODO: 在此添加专用代码和/或调用基类
GdiplusShutdown(gdiplusToken);
return CWinApp::ExitInstance();
}
其中,全局变量gdiplusToken的作用就是代表着对GDI+的一个引用。在使用GdiplusStartup函数时,该变量已经被初始化,在使用GdiplusShutdown函数时,通过对变量gdiplusToken的访问从而完成对GDI+资源的销毁工作。
经过上述三个步骤后,一个完整的GDI+程序的框架已经搭建完毕,只需在CGDIPlusDemoView::OnDraw(CDC* pDC)函数中添加相应的代码就可以了。

VC6 使用GDI+的最初步骤
1、下载GDI+的开发包,解压到硬盘上(据说有些XP系统盘自带)
http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip
http://www.codersource.net/samples/mfcgdiplus.zip

2、在VC6的Tools--Options--Directories中,在include和lib目录中添加开发包的对应目录

3、新建一个单文档的工程。在Stdafx.h中添加下面几条语句
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif
#i nclude <GdiPlus.h>
using namespace Gdiplus;

#pragma comment(lib, "gdiplus.lib")

4、在App类中增加两个成员变量
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;

在InitInstance()初始化GDI+库
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);

在ExitInstance()释放GDI+
GdiplusShutdown(m_pGdiToken);


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值