下面用 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. C#修改注册表设置默认浏览器

    项目中用到VPN技术登录来访问内部网络的应用系统,VPN客户端连接后会自动以默认浏览器来打开站点,由于应用系统使用的前端框架对IE浏览器版本要求较高,而用户大多数的电脑里安装的IE的版本都较低,于是想 ...

  2. IDT hook KiTrap03

    关于idt的基本知识就不进行赘述了,先看一个例子 0 ;------->进入内核,找到中断处理例程KiTrap03 0 这段代码执行,触发3号中断,然后开始执行KiTrap03例程,要知道,执行 ...

  3. OSVERSIONINFO的用法及实例

    OSVERSIONINFO 快速信息 Windows NT   支持 Windows 95    支持 Win32s           支持 引入程序库    - 头文件           win ...

  4. JAVA实现Excel导出数据(以写好的Excel模版导出)

    工作中经常会有将后台数据以Excel导出的功能. 简单的方法有将response的contentType设置为application/vnd.ms-excel: 或在JSP页面直接设置成: <% ...

  5. Android核心分析 之九Zygote Service

    Zygote Service 在本章我们会接触到这两个单词: Zygote [生物] 受精卵, 接合子, 接合体 Spawn:产卵 通过这两个单词,我们就可以大体知道Zygote是干什么的了,就是叫老 ...

  6. python 详解re模块

    正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系.^ 如果放在字 ...

  7. Jackson学习笔记-对象序列化

    一.用ObjectMapper.readValue(jsonString, Student.class) , ObjectMapper.writeValueAsString(student) impo ...

  8. http://blog.csdn.net/hguisu/article/details/7533759

    http://blog.csdn.net/hguisu/article/details/7533759

  9. 怎么批量修改Word表格的宽度

    怎么批量修改Word表格的宽度 怎么批量修改Word表格的宽度呢.Word表格可根据窗口自动调整表格宽度,使得所有的表格宽度和页面宽度一样.当页面设置了新的页边距后,所有的表格都需要调整新的宽度.或者 ...

  10. 第一个Struts2程序

    Struts2.3.16, Tomcat6.0.37,Java8 /web.xml <?xml version="1.0" encoding="UTF-8" ...