关于Gdi+和GdiplusStartup

GDI+实际上是一组类的定义,封装了gdi+的几乎所有API,当然使用方法就要从这些“例子”里边寻找了:)本文正是尝试用GDI+写一个纯SDK的程序,语言自然是我最喜欢的语言WIN32ASM.这个程序很简单,就是用GDI+画了一条直线。算是抛砖引玉吧,感兴趣的可以自己探索其他函数的用法。
使用GDI+ API之前,必须先调用GdiplusStartup这个函数,作用是初始化GDI+函数库。这个函数在SDK中就有。函数的原型是:

  
Status GdiplusStartup(ULONG_PTR token *token,
const GdiplusStartupInput *input,
GdiplusStartupOutput *output
);
   

第一个参数是指向一个32位的无符号整型的指针,也就是指向一个汇编中的DWORD变量的指针,用于接受GDI+的TOKEN.TOKEN可以暂时理解成一个句柄,就像窗口的句柄类似。这个参数在调用GdiplusShutdown的时候用到。这个函数在结束GDI+编程后调用,起作用是释放GDI+的资源。
第二个以及第三个参数是指向两个结构体变量的指针。GdiplusStartupInput的定义如下:
struct GdiplusStartupInput
{
UINT32 GdiplusVersion;
DebugEventProc DebugEventCallback;
BOOL SuppressBackgroundThread;
BOOL SuppressExternalCodecs;

GdiplusStartupInput(
DebugEventProc debugEventCallback = NULL,
BOOL suppressBackgroundThread = FALSE,
BOOL suppressExternalCodecs = FALSE)
{
GdiplusVersion = 1;
DebugEventCallback = debugEventCallback;
SuppressBackgroundThread = suppressBackgroundThread;
SuppressExternalCodecs = suppressExternalCodecs;
}
};
这个定义看似复杂,实际就四个32位的变量,可以定义成如下的形式:
struct GdiplusStartupInput
{
UINT32 GdiplusVersion;
DebugEventProc DebugEventCallback;
BOOL SuppressBackgroundThread;
BOOL SuppressExternalCodecs;
}
一般这个结构体初始化成1,0,0,0即可,并且这时候这个函数的最后一个参数GdiplusStartupOutput可以忽略,直接用NULL就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值