zoukankan      html  css  js  c++  java
  • 在MFC中使用GDI+的一般方法,以VC6.0编译器为例

    1.载解压GDI+开发包;

    2.正确设置include & lib 目录;

    设置如下:VC6.0编译器菜单Tools->Options->Directories中添加inlude files和Library files对应的文件夹(前提是你下载了GDI+的开发包,放到对应的文件夹中)

    3.在stdafx.h中添加:

    #define ULONG_PTR ULONG
    #include <gdiplus.h>
    #pragma comment(lib, "gdiplus.lib")
    using namespace Gdiplus;

    (1)在应用程序项目的应用类中,添加一个成员变量,如下列代码:

      ULONG_PTR m_gdiplusToken;

    (2)在应用类中添加ExitInstance的重载,并添加下列代码用来关闭GDI+: 

    Gdiplus::GdiplusShutdown(m_gdiplusToken);

    ULONG_PTR是一个DWORD数据类型,该成员变量用来保存GDI+被初始化后在应用程序中的GDI+标识,以便能在应用程序退出后,引用该标识来调用Gdiplus:: 

    (3)在应用类的InitInstance函数中添加GDI+的初始化代码:

    注意:下面这些GDI+的初始化代码必须放在m_pMainWnd->UpdateWindow();之前。

     Gdiplus::GdiplusStartupInput gdiplusStartupInput;
     Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

    (4)在需要绘图的窗口或视图类中添加GDI+的绘制代码。

    1. 在单文档应用程序中使用GDI+
    以上过程,在单文档,多文档或是基于对话框的工程步骤都是一样的。下面,我们就是以一个单文档应用程序CBmpRotate作为示例的。下面列出第4步所涉及的代码:

     

     基于对话框的工程GDIBase

     //要在dlg.DoModal();之前

     Gdiplus::GdiplusStartupInput gdiplusStartupInput;

     Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

    可以看到lastResult Ok,可以用Gdiplus::Ok来判断其状态是否调用成功。

    //如何在dlg.DoModal();之后添加如下代码

     Gdiplus::GdiplusStartupInput gdiplusStartupInput;

     Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

     就会出现

    出现GdiplusNotInitalized,说明初始化不正确。

    当然运行后,什么也没出现

    参考链接:http://blog.csdn.net/www66net/article/details/45365545

  • 相关阅读:
    .Net学习难点讨论系列2 – 细说C#中new关键字与多态
    [翻译]搜索关键字 – 管道与过滤器模式(PipesandFilters)与装饰模式(Decorator)之间的关系
    .Net学习难点讨论系列1 – 委托与事件之事件
    [翻译]Popfly系列课程1 Popfly课程计划概览
    常用桌面虚拟化软件横向对比
    各种算法的C#实现系列1 合并排序的原理及代码分析
    博客园安家
    疑:Microsoft® Silverlight™ Tools for Visual Studio 2008 SP1的版本让人困惑
    stream_socket_client
    stream_socket_client2
  • 原文地址:https://www.cnblogs.com/hpcpp/p/6170518.html
Copyright © 2011-2022 走看看