下面用 VC6 来写一个 GdiPlus 的 Demo 工程

Step1:新建一个名为 Demo_GdiPlus 的 MFC AppWizard(exe) 工程

操作步骤:
(1)主菜单File->New...,选择 Projects 选项卡;
(2)在工程类型列表中选中 MFC AppWizard(exe);
(3)Project name 填入 Demo_GdiPlus,按 OK 进入下一页;
(4)选择单文档(Single document)类型的程序框架,按 Finish 完成工程创建工作。

Step2:添加头文件声明

在 StdAfx.h 中添加以下代码:

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
typedef unsigned long ULONG_PTR, *PULONG_PTR;
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib, "GdiPlus.lib")

Step3:在 CDemo_GdiPlusApp 中增加成员变量 m_gdiplusToken,并在构造函数中进行初始化

class CDemo_GdiPlusApp : public CWinApp
{
private:
 ULONG_PTR m_gdiplusToken;
 // …… ……
};

CDemo_GdiPlusApp::CDemo_GdiPlusApp()
{
 // TODO: add construction code here,
 // Place all significant initialization in InitInstance
 m_gdiplusToken = NULL;
}

Step4:添加安装和卸载 GdiPlus 的代码
通过 ClassWizard 在 CDemo_GdiPlusApp 中增加成员函数

// .h 中的声明
virtual BOOL InitInstance();
virtual int ExitInstance();

// .cpp 中的实现
BOOL CDemo_GdiPlusApp::InitInstance()
{
 // 加载 GdiPlus
 Gdiplus::GdiplusStartupInput gdiplusStartupInput;
 Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
 // …… ……
}

int CDemo_GdiPlusApp::ExitInstance() 
{
 // TODO: Add your specialized code here and/or call the base class
 // 卸载 GdiPlus
 if (m_gdiplusToken)
  Gdiplus::GdiplusShutdown(m_gdiplusToken);  
 return CWinApp::ExitInstance();
}

Step5:找到 CDemo_GdiPlusView::OnDraw() 函数,在里面添加一段 GdiPlus 的绘图代码

void CDemo_GdiPlusView::OnDraw(CDC* pDC)
{
 CDemo_GdiPlusDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: add draw code for native data here
 
 Graphics graphics(pDC->GetSafeHdc());
 
 // Pen can also be constructed using a brush or another pen.  There is a second parameter - a width which defaults to 1.0f
 Pen blue (Color(255, 0, 0, 255));
 Pen red  (Color(255, 255, 0, 0));
 
 int y = 256;
 for (int x = 0; x < 256; x += 5)
 {
  graphics.DrawLine(&blue, 0, y, x, 0);
  graphics.DrawLine(&red, 256, x, y, 256);  
  y -= 5;
 }  
}

编译运行,Demo 程序完成。留住这个 Demo 程序,今后我们会利用它进行更加深入的 GdiPlus 学习。

在 VC6 中使用 GdiPlus-使用的更多相关文章

  1. 在VC6中使用ogre进行游戏开发

    微软公司开发的visual c++6.0堪称史上最易用.最成熟的开发工具.vc6以其小巧.轻便赢得了程序员的喜爱,以至于在VS大行其道的时代,很多程序员仍然使用vc6作为开发工具,vc6的欢迎性可见一 ...

  2. VC6中创建Qt工程的创建

    文章来源:http://blog.sina.com.cn/s/blog_64d015c10100sf1o.html 本文主要介绍怎么创建可以在VC6中编译的QT工程.本文所采用环境为VC++6.0+Q ...

  3. [转载]VC6中的文件后缀

    VC文件扩展名 .APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度. .BMP:位图资源文件. .BSC:浏览信息文件,由浏览信息维护工具 ...

  4. 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)

    一.图片显示 图片显示的方法: 1.  直接写程序 2.  第3方库 3.  调用COM组件的IPicture接口 4.  使用MFC的CPictureHolder类 5.  使用GDI+的CImag ...

  5. STLport在vc6中的集成

    STLport的下载 http://sourceforge.net/projects/stlport/ STLport的编译 * 试验环境 : win7x64sp1 + vc6sp6* 打开控制台窗口 ...

  6. vc6中向vs2010迁移的几个问题

    vc6版本支持的库编译:CJ60lib 1. 用vs2010打开CJ60库的源码的dsw,强制打开 (1)设置项目属性的语言 因为,如果代码字符的编码集不一样,则会出现函数冲定义,参数冲突等问题,这可 ...

  7. VC6中函数点go to definition报告the symbol XXX is undefined

    删除Debug中的bsc文件,再重建所有文件即可,在该函数处点击go to definition会提示重建.bsc文件,如果不行,多操作几次.

  8. vc6中向vs2010迁移的几个问题(2)

    1. 库文件的迁移 参考:http://www.cnblogs.com/icmzn/p/6724969.html 2. 其他项目中的可能遇到的问题: 2.1 无法打开包括文件:“fstream.h”: ...

  9. vc6中关于“新建”

    1.windows api 编程:新建→工程→Win32 Application→一个空工程→新建→文件→C++ Source File2.windows mfc 编程:新建→工程→MFC AppWi ...

随机推荐

  1. HDU 2852 KiKi's K-Number(树状数组+二分搜索)

    题意:给出三种操作 0 e:将e放入容器中 1 e:将e从容器中删除,若不存在,则输出No Elment! 2 a k:搜索容器中比a大的第k个数,若不存在,则输出Not Find! 思路:树状数组+ ...

  2. java 静态构造函数

    在java中貌似是没有静态构造函数的. 不过用下面的方式同样可以实现效果. static { }//end 这是静态代码块

  3. javascript console

    javascript console console.log(object[, object, ...])在控制台输出一条消息.如果有多个参数,输出时会用空格隔开这些参数. 第一个参数可以是一个包含格 ...

  4. (9)nehe教程3--添加颜色

    添加颜色: 作为第二课的扩展,我将叫你如何使用颜色.你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色. 上一课中我教给您三角形和四边形的绘制方法.这一课我将教您给三角形和四边 ...

  5. UVA 10341 二分搜索

    Solve the equation:p ∗ e−x + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x2 + u = 0where 0 ≤ x ≤ 1.In ...

  6. Eclipse Java EE 创建 Dynamic Web Project

    1.      创建一个web工程,此处用eclipse创建(如果对创建web工程很熟悉,可以不看的,本文目的是做一个记录)  1)     打开新建工程对话框,选择Dynamic web Proje ...

  7. UML类图、接口、包、关系

    一.类图:允许我们去标记静态内容及类之间的关系. 类的基本表示法: 名称 属性(类型,可见性) 方法(参数,返回值)  tip: 显示可见性:Options->Show Visibility 显 ...

  8. OnClientClick="return confirm('确定要删除吗?')"

    OnClientClick="return confirm('确定要删除吗?')"   -----------------------前台代码 OnClientClick用于执行客 ...

  9. http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html

    http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html

  10. C难点分析

    1. 形参和实参 调用函数时,写在括号里面的就是实参,函数本身用的就是形参. 2.字符串问题 char a[5]={"abcd"};注意是4个字符,而不是5个  字符串数组后面带  ...