GdiplusStartupInput 结构

GdiplusStartupInput 结构

GdiplusStartupInput 结构

该结构持有GdiplusStartup函数所需要使用的一组参数.

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;
    }
};

typedef VOID (WINAPI *DebugEventProc)(DebugEventLevel level, CHAR *message);

成员

GdiplusVersion
指定Microsoft Windows GDI+的版本. 必须为 1.
DebugEventCallback           默认为NULL,一个用于调试的回调函数。
SuppressBackgroundThread
用于指定是否压缩GDI+背景线程的布尔值。如果设置该成员为TRUE, GdiplusStartup 返回一个指向挂钩函数和一个解勾函数的指针。必须调用这些函数来妥善的替换掉背景线程。如果不想调用这些函数,这是这个成员为FALSE。默认值为FALSE
SuppressExternalCodecs
指定是否让GDI+压缩外部图片codecs的布尔值。1.0不支持该功能,所以该值被忽略。

该结构其实就是一个构造器,可以设置它的四个成员的值,如果不设置的话,也可以提供一个空的结构,系统会自动为这些成员提供合适的初始默认值

调用钩子函数时,要注意使用解勾函数。

在创建任何GDI +对象之前,您必须调用GdiplusStartup,然后在调用GdiplusShutdown之前必须先删除所有的GDI +对象。

只要您在致电GdiplusShutdown之前删除所有的GDI +对象(或超出范围),您可以在一个线程上调用GdiplusShutdown并调用另一个线程的GdiplusShutdown.

不要在LibMain或LibMain调用的任何函数中调用GdiplusStartup或GdiplusShutdown.如果要创建使用GDI +的动态链接库(DLL),您应该使用以下技术之一来初始化GDI +:

要求您的客户端在调用DLL中的函数之前调用GdiplusStartup,并在完成使用DLL后调用GdiplusShutdown.
导出您自己的启动函数调用GdiplusStartup和您自己的关闭功能调用GdiplusShutdown.要求您的客户端在调用您的启动函数之前调用其中的DLL函数,并在完成使用DLL后调用关机功能。
在您进行GDI +呼叫的每个功能中调用GdiplusStartup和GdiplusShutdown.

原文地址:https://www.cnblogs.com/rosesmall/p/14793683.html