GdiPlusInit.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /**************************************************************************
  2. *
  3. * Copyright (c) 2000-2001 Microsoft Corporation
  4. *
  5. * Module Name:
  6. *
  7. *   Gdiplus initialization
  8. *
  9. * Abstract:
  10. *
  11. *   GDI+ Startup and Shutdown APIs
  12. *
  13. **************************************************************************/
  14. #ifndef _GDIPLUSINIT_H
  15. #define _GDIPLUSINIT_H
  16. enum DebugEventLevel
  17. {
  18.     DebugEventLevelFatal,
  19.     DebugEventLevelWarning
  20. };
  21. // Callback function that GDI+ can call, on debug builds, for assertions
  22. // and warnings.
  23. typedef VOID (WINAPI *DebugEventProc)(DebugEventLevel level, CHAR *message);
  24. // Notification functions which the user must call appropriately if
  25. // "SuppressBackgroundThread" (below) is set.
  26. typedef Status (WINAPI *NotificationHookProc)(OUT ULONG_PTR *token);
  27. typedef VOID (WINAPI *NotificationUnhookProc)(ULONG_PTR token);
  28. // Input structure for GdiplusStartup()
  29. struct GdiplusStartupInput
  30. {
  31.     UINT32 GdiplusVersion;             // Must be 1
  32.     DebugEventProc DebugEventCallback; // Ignored on free builds
  33.     BOOL SuppressBackgroundThread;     // FALSE unless you're prepared to call 
  34.                                        // the hook/unhook functions properly
  35.     BOOL SuppressExternalCodecs;       // FALSE unless you want GDI+ only to use
  36.                                        // its internal image codecs.
  37.     
  38.     GdiplusStartupInput(
  39.         DebugEventProc debugEventCallback = NULL,
  40.         BOOL suppressBackgroundThread = FALSE,
  41.         BOOL suppressExternalCodecs = FALSE)
  42.     {
  43.         GdiplusVersion = 1;
  44.         DebugEventCallback = debugEventCallback;
  45.         SuppressBackgroundThread = suppressBackgroundThread;
  46.         SuppressExternalCodecs = suppressExternalCodecs;
  47.     }
  48. };
  49. // Output structure for GdiplusStartup()
  50. struct GdiplusStartupOutput
  51. {
  52.     // The following 2 fields are NULL if SuppressBackgroundThread is FALSE.
  53.     // Otherwise, they are functions which must be called appropriately to
  54.     // replace the background thread.
  55.     //
  56.     // These should be called on the application's main message loop - i.e.
  57.     // a message loop which is active for the lifetime of GDI+.
  58.     // "NotificationHook" should be called before starting the loop,
  59.     // and "NotificationUnhook" should be called after the loop ends.
  60.     
  61.     NotificationHookProc NotificationHook;
  62.     NotificationUnhookProc NotificationUnhook;
  63. };
  64. // GDI+ initialization. Must not be called from DllMain - can cause deadlock.
  65. //
  66. // Must be called before GDI+ API's or constructors are used.
  67. //
  68. // token  - may not be NULL - accepts a token to be passed in the corresponding
  69. //          GdiplusShutdown call.
  70. // input  - may not be NULL
  71. // output - may be NULL only if input->SuppressBackgroundThread is FALSE.
  72. extern "C" Status WINAPI GdiplusStartup(
  73.     OUT ULONG_PTR *token,
  74.     const GdiplusStartupInput *input,
  75.     OUT GdiplusStartupOutput *output);
  76. // GDI+ termination. Must be called before GDI+ is unloaded. 
  77. // Must not be called from DllMain - can cause deadlock.
  78. //
  79. // GDI+ API's may not be called after GdiplusShutdown. Pay careful attention
  80. // to GDI+ object destructors.
  81. extern "C" VOID WINAPI GdiplusShutdown(ULONG_PTR token);
  82. #endif