关于Gdi+和GdiplusStartup
发布日期:2021-07-30 03:26:19 浏览次数:11 分类:技术文章

本文共 1235 字,大约阅读时间需要 4 分钟。

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就可以

转载地址:https://blog.csdn.net/u010890209/article/details/14456437 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:亚像素Subpixel
下一篇:metadata

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月17日 23时05分05秒