VC6.0增加对GDI+支持的配置方式
2014-08-13 14:26
239 查看
首先参照网络上其他人的配置如下:
C++程序员还应去找GdiPlus.h及GdiPlus.lib。以下地址所提供的名为gdiplus.zip的文件就包括了这些文件:
http://www.crazy-bit.com/download/gdiplus.zip
而以下的地址则提供了一站式的所有资源,即包含了GdiPlus.h等头文件, GdiPlus.lib及GdiPlus.dll:
http://www.codersource.net/samples/mfcgdiplus.zip
根据解压的不同方式,有不同的引用方法。
第一种方法是直接引用。
需要将gdiplus.h, gdiplus.lib分别拷贝至VC相应的include及lib目录下。这两个目录可通过VC6的Toos->Options->Directories标签页中,在Show directories for下拉列表框中分别选择Include files及Library files查询到。
如Include,一般包括3个路径:VC98/INCLUDE, VC98/MFC/INCLUDE及VC98/ATL/INCLUDE,分别对应非MFC应用,MFC应用及ATL应用所用的不同路径。
然后在StdAfx.h中加入如下的语句:
#define ULONG_PTR ULONG
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
GdiPlusInit.h中使用了ULONG_PTR的数据类型,但此类型在VC6中没有定义。因此必须在#include语句之前先进行定义。#pragma comment(lib, "gdiplus.lib")指示在连接时在应用所在目录或系统LIB目录下查找gdiplus.lib。
第二种方法是将其解压到任意一个文件夹,然后在StdAfx.h中明确指明具体路径(饶:我用的方法)。
为什么使用这种方法:如果我们的代码需要随处使用,那么就不方便放在vc的安装路径下,就必须放在自己的路径下。
#define ULONG_PTR ULONG //方便后边使用
#include "C:/gdiplus/Include/gdiplus.h"
using namespace Gdiplus; //如果和其他库中的类型有冲突,则需在具体使用文件处加这句话,或者直接Gdiplus::
#pragma comment(lib, "C:/gdiplus/lib/gdiplus.lib") //如果是在工程中配置了,就不需要这句话。
除了用以上的方法连接gdiplus.lib之外,还可以在Project->Settings->Link->Object/library modules中输入gdiplus.lib(若有多个库,可用空格隔开,但GDI+只有一个库)。
这种方法,可不用在StdAfx.h中输入#pragma comment。
GDI+的使用:
在使用GDI+之前,您必须通过GdiplusStartup()启动GDI+,而在使用完毕后,调用GdiplusShutdown()来清理现场。 根据MFC的特点,应相应地放在XXXApp类的InitInstance()及ExitInstance()中。
1、先为XXXApp类添加两私有成员变量:
private:
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;//ULONG_PTR类型在前面定义过
然后在InitInstance()中,在调用m_pMainWnd->ShowWindow()及m_pMainWnd->UpdateWindow()之前调用GdiplusStartup():
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
注意,如果GdiplusStartup()放在ShowWindow()及UpdateWindow()之后,则当窗口第一次显示时,由于GDI+还未启动,GDI+所画的图形不会显示出来,直到第二个WM_PAINT的消息传到。
2、结束时在ExitInstance()中,如下编写代码:
GdiplusShutdown(gdiplusToken);
return CWinApp::ExitInstance();
现在,GDI+已经准备完毕,可以使用了。
在XXXView类的OnDraw()方法中:
Graphics graphics(pDC->m_hDC);
Pen pen(Color(50, 255, 0, 255), 15);
pen.SetDashStyle(DashStyleDash);
pen.SetStartCap(LineCapRoundAnchor);
pen.SetEndCap(LineCapArrowAnchor);
graphics.DrawLine(&pen, 20, 20, 300, 100);
graphics.DrawLine(&pen, 300, 100, 600, 100);
先使用OnDraw()方法的参数pDC的成员变量m_hDC在堆上构造一个Graphics的实例graphics,创建一个Pen并进行设置,然后通过graphics的DrawLine()方法画出直线来。
与GDI相比较,GDI+不必将Pen, Brush等对象选进DC再画图,而是通过使用DC的句柄来创建一个Graphics实例,之后,直接使用此实例来进行画图。这种风格,确实大大方便了编程人员。
遇到的问题:
1、包含文件位置问题,在StdAfx.h中加入包含文件时,注意#include<gdiplus.h>应该放在#include<afxwin.h>、#include<afxext.h>、#include<afxdisp.h>和#include<afxdtctl.h>之后和在using namespace std之前。
2、命名空间类型冲突问题,在我武钢调度系统中的excel9.h的Point类型和GDI+中的有冲突,所有不能再StdAfx.h包含头文件时指明"using namespace Gdiplus"。需在具体使用时指明。
C++程序员还应去找GdiPlus.h及GdiPlus.lib。以下地址所提供的名为gdiplus.zip的文件就包括了这些文件:
http://www.crazy-bit.com/download/gdiplus.zip
而以下的地址则提供了一站式的所有资源,即包含了GdiPlus.h等头文件, GdiPlus.lib及GdiPlus.dll:
http://www.codersource.net/samples/mfcgdiplus.zip
根据解压的不同方式,有不同的引用方法。
第一种方法是直接引用。
需要将gdiplus.h, gdiplus.lib分别拷贝至VC相应的include及lib目录下。这两个目录可通过VC6的Toos->Options->Directories标签页中,在Show directories for下拉列表框中分别选择Include files及Library files查询到。
如Include,一般包括3个路径:VC98/INCLUDE, VC98/MFC/INCLUDE及VC98/ATL/INCLUDE,分别对应非MFC应用,MFC应用及ATL应用所用的不同路径。
然后在StdAfx.h中加入如下的语句:
#define ULONG_PTR ULONG
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
GdiPlusInit.h中使用了ULONG_PTR的数据类型,但此类型在VC6中没有定义。因此必须在#include语句之前先进行定义。#pragma comment(lib, "gdiplus.lib")指示在连接时在应用所在目录或系统LIB目录下查找gdiplus.lib。
第二种方法是将其解压到任意一个文件夹,然后在StdAfx.h中明确指明具体路径(饶:我用的方法)。
为什么使用这种方法:如果我们的代码需要随处使用,那么就不方便放在vc的安装路径下,就必须放在自己的路径下。
#define ULONG_PTR ULONG //方便后边使用
#include "C:/gdiplus/Include/gdiplus.h"
using namespace Gdiplus; //如果和其他库中的类型有冲突,则需在具体使用文件处加这句话,或者直接Gdiplus::
#pragma comment(lib, "C:/gdiplus/lib/gdiplus.lib") //如果是在工程中配置了,就不需要这句话。
除了用以上的方法连接gdiplus.lib之外,还可以在Project->Settings->Link->Object/library modules中输入gdiplus.lib(若有多个库,可用空格隔开,但GDI+只有一个库)。
这种方法,可不用在StdAfx.h中输入#pragma comment。
GDI+的使用:
在使用GDI+之前,您必须通过GdiplusStartup()启动GDI+,而在使用完毕后,调用GdiplusShutdown()来清理现场。 根据MFC的特点,应相应地放在XXXApp类的InitInstance()及ExitInstance()中。
1、先为XXXApp类添加两私有成员变量:
private:
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;//ULONG_PTR类型在前面定义过
然后在InitInstance()中,在调用m_pMainWnd->ShowWindow()及m_pMainWnd->UpdateWindow()之前调用GdiplusStartup():
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
注意,如果GdiplusStartup()放在ShowWindow()及UpdateWindow()之后,则当窗口第一次显示时,由于GDI+还未启动,GDI+所画的图形不会显示出来,直到第二个WM_PAINT的消息传到。
2、结束时在ExitInstance()中,如下编写代码:
GdiplusShutdown(gdiplusToken);
return CWinApp::ExitInstance();
现在,GDI+已经准备完毕,可以使用了。
在XXXView类的OnDraw()方法中:
Graphics graphics(pDC->m_hDC);
Pen pen(Color(50, 255, 0, 255), 15);
pen.SetDashStyle(DashStyleDash);
pen.SetStartCap(LineCapRoundAnchor);
pen.SetEndCap(LineCapArrowAnchor);
graphics.DrawLine(&pen, 20, 20, 300, 100);
graphics.DrawLine(&pen, 300, 100, 600, 100);
先使用OnDraw()方法的参数pDC的成员变量m_hDC在堆上构造一个Graphics的实例graphics,创建一个Pen并进行设置,然后通过graphics的DrawLine()方法画出直线来。
与GDI相比较,GDI+不必将Pen, Brush等对象选进DC再画图,而是通过使用DC的句柄来创建一个Graphics实例,之后,直接使用此实例来进行画图。这种风格,确实大大方便了编程人员。
遇到的问题:
1、包含文件位置问题,在StdAfx.h中加入包含文件时,注意#include<gdiplus.h>应该放在#include<afxwin.h>、#include<afxext.h>、#include<afxdisp.h>和#include<afxdtctl.h>之后和在using namespace std之前。
2、命名空间类型冲突问题,在我武钢调度系统中的excel9.h的Point类型和GDI+中的有冲突,所有不能再StdAfx.h包含头文件时指明"using namespace Gdiplus"。需在具体使用时指明。
相关文章推荐
- GDI+:___VC6.0添加对GDI+的支持
- vc6.0 配置GDI+
- Apache 配置------FastCGI方式使用PHP(包含:linux下编译安装fmod_fcgid,配置apache以支持FastCGI)
- vs2010 配置boost环境变量 使用增加环境变量的方式,不是绝对路径
- Flume-ng-1.4.0 spooling source的方式增加了对目录的递归检测的支持
- __FUNCTION__ 在C语言中以编程的方式获取函数名(VC6.0不支持)
- 思科支持的不同板卡配置方式
- 在windows下配置apache以cgi方式支持python
- 2.6内核增加usb支持 - 配置简介
- VC6.0编写IE可运行的ActiveX,增加安全检测项,不支持64位浏览器
- vc6.0配置gdi+
- Flume-ng-1.3.0 spooling source的方式增加了对目录的递归检测的支持
- 安装配置websvn,支持web方式浏览svn
- source insight 增加对lua语言的支持配置
- 集中配置方式解决JSP不支持EL表达式
- VC6.0使用GDI+的配置
- CKeditor 配置好的,支持QQ表情以及去掉多余功能.增加插入代码插件(附注释)
- VMware9.0下采用默认方式安装的Redhat Enterprise Linux 5后配置vim支持中文
- 关于vc6.0下配置GDI+的问题
- hibernate 支持配置文件和annotation两种方式