MFC使用GDI+编程设置

更新时间:2023-07-14 07:45:23 阅读: 评论:0

MFC使用GDI+编程设置
VC2005“项目/*属性”菜单项,打开项目的属性页窗口,先选“所有配置”,再选“配置属性/链接器/输入”项,在右边上部的“附加依赖项”栏的右边,键入GdiPlus.lib 后按“应用”钮,最后按“确定”钮关闭对话框。
在需要用到GDI+的文件头加上下面两句
#include <gdiplus.h>
using namespace Gdiplus;

在应用程序类应用程序类(CGDIPlusDemoApp) 头文件中声明一个成员变量:
ULONG_PTR m_gdiplusToken;    // ULONG PTR 为int64 类型
并在该类的初始化函数CGDIPlusDemoApp::InitInstance() 中加入以下代码来对GDI+进行初始化:
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
注意:这两个语句必须加在应用程序类的InitInstance函数中的
CWinApp:: InitInstance ();
语句之前,不然以后会造成视图窗口不能自动重画、程序中不能使用字体等等一系列问题。

还要在CGDIPlusDemoApp::ExitInstance() 函数(重写)中加入以下代码来关闭GDI +:
GdiplusShutdown(m_gdiplusToken);
上面是所需步骤..

MFC使用GDI+编程基础
封装在GDI+ API中的各种C++类、函数、常量、枚举和结构,都被定义在Gdiplus.h头文件所包含的一系列头文件中。所以,采用MFC进行GDI+编程,必须包含Gdiplus.h头文件。
雨滴项链
封装在GDI+类中方法,最后都需要调用GDI+平面API中的相关底层函数,才能完成实际的操作。所以,为了运行GDI+应用程序,在操作系统平台中,必须安装动态链接库Gdiplus.dll。
该动态链接库所对应的静态库文件为GdiPlus.lib,而且它不是C++和MFC的缺省链接库。所以,必须在项目设置,添加该库作为链接器输入的附加依赖项。
因为在Gdiplus.h头文件中,将所有的GDI+的类、函数、常量、枚举和结构等都定义在了命名空间Gdiplus中。所以,一般在GDI+程序中,都必须使用如下的命名空间声明:
using namespace Gdiplus;
例如:
#include <gdiplus.h>
using namespace Gdiplus;
……
1)GdiPlus.h
/*********************************************************************\
* Copyright (c) 1998-2001, Microsoft Corp. All Rights Rerved.
* Module Name:
*  Gdiplus.h
* Abstract:
*  GDI+ public header file
\*********************************************************************/
一次函数知识点总结#ifndef _GDIPLUS_H
#define _GDIPLUS_H
struct IDirectDrawSurface7;
typedef signed  short  INT16;
typedef unsigned short UINT16;
#include <pshpack8.h>  // t structure packing to 8
namespace Gdiplus
{
    namespace DllExports {
        #include "GdiplusMem.h"
    };
    #include "GdiplusBa.h"
    #include "GdiplusEnums.h"
好记的英文名    #include "GdiplusTypes.h"
    #include "GdiplusInit.h"
    #include "GdiplusPixelFormats.h"
    #include "GdiplusColor.h"
什么亡什么寒
    #include "GdiplusMetaHeader.h"
    #include "GdiplusImaging.h"
    #include "GdiplusColorMatrix.h"
    #include "GdiplusGpStubs.h"
    #include "GdiplusHeaders.h"
    namespace DllExports {田圃
        #include "GdiplusFlat.h"
    };
    #include "GdiplusImageAttributes.h"
新年愿望作文300字    #include "GdiplusMatrix.h"
    #include "GdiplusBrush.h"
    #include "GdiplusPen.h"
    #include "GdiplusStringFormat.h"
    #include "GdiplusPath.h"
    #include "GdiplusLineCaps.h"
    #include "GdiplusMetafile.h"
    #include "GdiplusGraphics.h"
    #include "GdiplusCachedBitmap.h"
    #include "GdiplusRegion.h"
    #include "GdiplusFontCollection.h"
    #include "GdiplusFontFamily.h"
    #include "GdiplusFont.h"
    #include "GdiplusBitmap.h"
    #include "GdiplusImageCodec.h"
}; // namespace Gdiplus
#include <poppack.h>    // pop structure packing back to previous state
#endif // !_GDIPLUS_HPP
2)GDI+的初始化与清除
为了在MFC应用程序中使用采用C++封装的GDI+ API,必须在MFC项目的应用程序类中,调用GDI+命名空间中的GDI+启动函数GdiplusStartup和GDI+关闭函数GdiplusShutdown,
来对GDI+进行初始化(装入动态链接库Gdiplus.dll,或锁定标志+1)和清除(卸载动态链接库Gdiplus.dll,或锁定标志-1)工作。它们一般分别在应用程序类的InitInstance和ExitInstance重载成员函数中调用。
函数GdiplusStartup和GdiplusShutdown,都被定义在GdiplusInit.h头文件中:
Status WINAPI GdiplusStartup(
    OUT ULONG_PTR *token,
    const GdiplusStartupInput *input,
    OUT GdiplusStartupOutput *output);
void GdiplusShutdown(ULONG_PTR token);
其中:
l    类型ULONG_PTR,是用无符号长整数表示的指针,被定义在batsd.h头文件中:
typedef _W64 unsigned long ULONG_PTR;
输出参数token(权标),供关闭GDI+的函数使用,所以必须设置为应用程序类的成员变量(或全局变量,不提倡)。
l    结构GdiplusStartupInput和GdiplusStartupOutput,也都被定义在GdiplusInit.h头文件中:
struct GdiplusStartupInput {
    UINT32 GdiplusVersion;            // Must be 1
    DebugEventProc DebugEventCallback; // Ignored on free builds
    BOOL SuppressBackgroundThread;  // FALSE unless you're prepared to call
                                      // the hook/unhook functions properly
    BOOL SuppressExternalCodecs;      // FALSE unless you want GDI+ only to u
基督教音乐                                      // its internal image codecs.
    GdiplusStartupInput(
招风耳面相        DebugEventProc debugEventCallback = NULL,
        BOOL suppressBackgroundThread = FALSE,
        BOOL suppressExternalCodecs = FALSE) {
        GdiplusVersion = 1;

本文发布于:2023-07-14 07:45:23,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1095755.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   使用   应用程序   成员   关闭   调用   不能
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图