GDI+开发环境的配置

下载GDI+ SDK for Visual C++6.0

下载地址: http://groups.google.com/group/tim-files/files?upload=1     名为GDIPlus.zip

配置Visual C++6.0环境

将GDI+下的Include文件夹添加到Visual C++6.0

Tools->Options->Directorys下的的Include files下面添加GDI+的Include文件夹的路径,见下图:

将GDI+下的Lib文件夹添加到Visual C++6.0

Tools->Options->Directorys下的的Lib files下面添加GDI+的Lib文件夹的路径,见下图:

配置Visual C++6.0的工程环境

在StdAfx.h中添加代码

添加的代码如下:
#define ULONG_PTR ULONG
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")

编译、连接工程

至于如何编译和连接工程,我想就不废话了吧,按两下按钮就OK了。
将GDI+解压出来的文件下的gdiplus.dll拷贝到工程Debug或Release目录下。

在CWinApp派生类中添加成员变量

如果你的工程名字是test,那么CWinApp的派生类的名字就为CtestApp。在CtestApp的头文件(也就是test.h)中,添加如下代码:
private:
  GdiplusStartupInput m_gdiplusStartupInput;
  ULONG_PTR m_pGdiToken;

在CWinApp派生类中的InitialInstance函数中添加初始化代码

添加的代码如下:
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);

为CWinApp派生类添加Virtual Function

添加的虚函数的名字为ExitInstance,并在ExitInstance中添加如下退出GDI+的代码:
GdiplusShutdown(m_pGdiToken);

测试GDI+环境是否配置成功

新建一个单文档工程,然后在工程的OnDraw函数中添加如下代码:
Graphics graphics(pDC->m_hDC);
Pen pen(Color(255, 0, 255));
graphics.DrawLine(&pen, 0, 0, 200, 100);
然后编译,运行工程,如果可以显示出一条线,就证明已经配置成功了。

特别注意

如果你建立的是一个基于对话框的程序,可能无法使用GDI+。因为我尝试过在对话框程序下面配置GDI+,总是出现如下的错误:
f:/includes/gdiplusenums.h(29) : error C2146: syntax error : missing ';' before identifier 'GraphicsState'
f:/includes/gdiplusenums.h(29) : fatal error C1004: unexpected end of file found
即使你在 #include <gdiplus.h>之前加上#include <afxdtctl.h>,那么在编译阶段是不会有错误的,但是连接的时候就会出现同样的错误,而且不能通过。
但是,单文档的应用程序,按照上面的配置就不会出现编译或链接的错误的。
但是,不知道为什么,后来我建立了一个基于对话框的程序,就没有上面的编译的问题。只是不能绘制出曲线。
如果是基于对话框的程序,那么需要相应WM_PAINT消息,然后再OnPaint函数中添加如下代码:
void CDlgGDIDlg::OnPaint()
{
  CPaintDC dc(this); // device context for painting
  
  CDC* pDC=GetDC();
  Graphics graphics(pDC->GetSafeHdc());
  
    //添加自己的绘制代码
  
  ReleaseDC(pDC);
}
可是仍不能绘制出曲线,原因是如果你建立的是基于对话框的应用程序,那么初始化InitialInstance中的初始化GDI+的代码必须放在DoModal函数之前。然而,即便如此,我发现在OnPait函数中的GDI+代码可以画出来,可是在按钮下面的仍然是编译通过,但是画不出来。
不过有一种解决方法就是在按钮下面调用OnPaint函数,然后再调用RedrawWindow函数就可以了。比如下面的程序:
void CGDIDlg::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 
 // TODO: Add your message handler code here
 // Do not call CDialog::OnPaint() for painting messages
 
 
 using namespace Gdiplus;
    Graphics graphics( dc.m_hDC );
 if(m_filename!="")
 {
  Image image(m_filename.AllocSysString());
  graphics.DrawImage(&image,0,0);
  UpdateWindow();
 }
 
}
void CGDIDlg::OnFileOpen()
{
 // TODO: Add your command handler code here
 //利用系统的打开对话框
 static char szFilter[]="位图文件(*.bmp;*.dib)|*.bmp;*.dib|JPG文件(*.jpg)|*.jpg|All Files(*.*)|*.*||";
  CFileDialog dlg(true,"*.bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
  if(dlg.DoModal()==IDOK)
  {
   UpdateData(true);
   m_filename=dlg.GetPathName();
  m_pImage=Image::FromFile(m_filename.AllocSysString());
  }
  else
  {
   return;
  }
 OnPaint();
 
 RedrawWindow(); 
}
如果是单文档或多文档的,要在OnDraw函数中添加如下代码:
void CExampleView::OnDraw(CDC* pDC)
{
    CExampleDoc* pDoc=GetDocument();
    ASSERT_VALID(pDoc);
    if(!pDoc) return;
 
    //添加内容
    Graphics graph(pDC->GetSafeHdc());
    //添加自己的绘制代码
}
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
目录 前言 第1章 Windows CE及开发环境概述 1.1 Windows CE概述 1.1.1 Windows CE嵌入式系统概述 1.1.2 Windows CE版本 1.1.3 Windows CE 6.0概述 1.1.4 嵌入式开发流程 1.2 开发环境概述 1.2.1 Visual Studio 2005的Visual C++——Windows CE开发环境概述 1.2.2 示例程序HelloWorld 1.3 Windows CE附带远程工具概述 第2章 图形编程 2.1 设备环境类 2.2 图形对象类(GDI) 2.3 绘制各种图形 2.4 绘制位图 2.4.1 CDC绘图函数描述 2.4.2 动画效果 2.4.3 抓屏 2.4.4 图形显示特技 2.5 显示压缩格式图片 2.5.1 SHLoadImageFile方法 2.5.2 Imaging技术 2.6 简单二维曲线示例 2.6.1 二维曲线类C2Dgraph的创建 2.6.2 使用二维曲线类C2DGraph绘制曲线 第3章 对话框控件 3.1 常用控件 3.1.1 微调按钮 3.1.2 滑动条 3.1.3 进度条 3.1.4 列表视图控件 3.1.5 树控件 3.2 创建图形显示控件 3.3 创建LED数字显示控件 第4章 进程 4.1 进程 4.1.1 进程概述 4.1.2 进程创建 4.1.3 进程终止 4.1.4 其他进程函数 4.1.5 “进程列举并管理”实例 4.2 进程间通讯 第5章 线程 5.1 线程 5.1.1 线程概述 5.1.2 线程优先级 5.1.3 线程API函数 5.2 线程同步 5.2.1 未使用线程同步 5.2.2 利用事件同步 5.2.3 利用互斥同步 5.2.4 利用临界区同步 5.2.5 利用信号量同步 第6章 文件 6.1 文件基本操作 6.2 文件综合操作示例 6.3 内存映射文件 6.3.1 内存映射文件概述 6.3.2 利用内存映射文件实现进程间通讯 6.4 文件系统管理 6.5 注册表编程 6.5.1 注册表简介 6.5.2 注册表API函数 6.5.3 注册表操作举例 第7章 多媒体编程 7.1 Direct Show介绍 7.1.1 DirectShow技术框架 7.1.2 过滤器(Filter) 7.1.3 Filter Graph Manager 7.1.4 Pin 7.1.5 DirectShow 接口定义介绍 7.2 媒体播放器示例 7.3 摄像头捕捉示例 7.3.1 摄像头捕捉概述 7.3.2 摄像头捕捉示例 第8章 Windows CE基础数据库编程 8.1 EDB概述 8.1.1 装配数据卷 8.1.2 卸载数据库卷 8.1.3 创建数据库 8.1.4 创建会话对象 8.1.5 打开数据库 8.1.6 事务操作 8.1.7 删除数据库 8.1.8 枚举数据库卷以及数据库 8.1.9 查找或移动记录 8.1.10 写记录 8.1.11 读取记录 8.1.12 删除记录 8.1.13 流操作 8.2 数据库操作综合示例 第9章 SQLCE数据库编程 9.1 SQL Server FOR CE的介绍 9.1.1 SQLCE简介 9.1.2 SQL Server CE 3.0的安装 9.1.3 SQLCE 3.0连接配置 9.2 OLEDB 编程访问SQLCE 3.0 9.2.1 OLE DB 概述 9.2.2 OLEDB 编程 9.3 SQLCE远程数据访问 9.3.1 Pull(拉数据) 9.3.2 Push(推数据) 9.3.3 Submit(远程T-SQL操作) 9.4 远程数据访问综合示例 第10章 串口编程 10.1 串口概述 10.2 串口编程API函数介绍 10.3 CE串口综合示例 10.4 GPS编程示例 第11章 网络编程概述 11.1 套接字编程基础 11.1.1 WinSock初始化和释放 11.1.2 创建套接字 11.1.3 关闭套接字 11.1.4 绑定套接字 11.1.5 监听套接字 11.1.6 等待连接 11.1.7 建立连接 11.1.8 发送数据 11.1.9 接收数据 11.1.10 设置套接字模式 11.1.11 Select I/O模型 11.2 PING编程 11.2.1 PING编程概述 11.2.2 PING编程示例 11.3 RAS拨号编程 11.3.1 建立拨号连接 11.3.2 关闭拨号连接 11.3.3 列举已建立的活动连接 11.3.4 列举电话簿条目 第12章 UDP编程 12.1 UDP编程概述 12.2 UDP编程示例 第13章 TCP编程 13.1 TCP编程概述 13.2 TCP客户端示例 13.3 TCP服务器端示例 第14章 DLL编程 14.1 DLL概述 14.2 DLL的调用 14.2.1 静态调用 14.2.2 动态调用 14.3 DLL的创建 14.3.1 Windows CE DLL的创建 14.3.2 基于MFC的Regular DLL的创建 14.3.3 资源DLL 第15章 COM编程 15.1 COM基本知识概述 15.1.1 什么是COM 15.1.2 什么是接口 15.1.3 COM基本结构 15.2 使用ATL创建COM示例 15.2.1 ATL对COM支持概述 15.2.2 ATL创建COM对象示例 15.2.3 创建客户端调用CEComServer 15.3 可连接点对象及示例 15.3.1 可连接点对象概述 15.3.2 连接点示例 15.4 创建ActiveX控件 15.4.1 ActiveX概述 15.4.2 使用MFC向导创建一个简单的ActiveX控件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值