olepro32.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1997 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10. #include "stdafx.h"
  11. HINSTANCE volatile _hOlePropLib = NULL;
  12. HRESULT (STDAPICALLTYPE *_pfnOleCreatePropertyFrame)(HWND, UINT, UINT,
  13. LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, LPVOID) =
  14. NULL;
  15. HRESULT (STDAPICALLTYPE *_pfnOleCreatePropertyFrameIndirect)(LPOCPFIPARAMS) =
  16. NULL;
  17. HRESULT (STDAPICALLTYPE *_pfnOleTranslateColor)(OLE_COLOR, HPALETTE,
  18. COLORREF*) = NULL;
  19. HRESULT (STDAPICALLTYPE *_pfnOleCreateFontIndirect)(LPFONTDESC, REFIID,
  20. LPVOID*) = NULL;
  21. HRESULT (STDAPICALLTYPE *_pfnOleCreatePictureIndirect)(LPPICTDESC, REFIID,
  22. BOOL, LPVOID*) = NULL;
  23. HRESULT (STDAPICALLTYPE *_pfnOleLoadPicture)(LPSTREAM, LONG, BOOL, REFIID,
  24. LPVOID*) = NULL;
  25. FARPROC AFXAPI _GetOlePropLibFunc(LPCSTR pszFuncName)
  26. {
  27. if (_hOlePropLib == NULL)
  28. {
  29. AfxLockGlobals(CRIT_DYNDLLLOAD);
  30. if (_hOlePropLib == NULL)
  31. {
  32. #ifndef _MAC
  33. _hOlePropLib = LoadLibraryA("OLEPRO32.DLL");
  34. #else
  35. _hOlePropLib = LoadLibraryEx("OLEPRO32.DLL", NULL, LOAD_BY_FRAGMENT_NAME);
  36. #endif
  37. }
  38. AfxUnlockGlobals(CRIT_DYNDLLLOAD);
  39. }
  40. FARPROC pfnProc = NULL;
  41. if (_hOlePropLib != NULL)
  42. pfnProc = GetProcAddress(_hOlePropLib, pszFuncName);
  43. return pfnProc;
  44. }
  45. STDAPI _AfxOleCreatePropertyFrame(HWND hwndOwner, UINT x, UINT y,
  46. LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN* ppUnk, ULONG cPages,
  47. LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, LPVOID pvReserved)
  48. {
  49. if (_pfnOleCreatePropertyFrame == NULL)
  50. {
  51. (FARPROC&)_pfnOleCreatePropertyFrame =
  52. _GetOlePropLibFunc("OleCreatePropertyFrame");
  53. if (_pfnOleCreatePropertyFrame == NULL)
  54. return E_FAIL;
  55. }
  56. return (*_pfnOleCreatePropertyFrame)(hwndOwner, x, y, lpszCaption,
  57. cObjects, ppUnk, cPages, pPageClsID, lcid, dwReserved, pvReserved);
  58. }
  59. STDAPI _AfxOleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
  60. {
  61. if (_pfnOleCreatePropertyFrameIndirect == NULL)
  62. {
  63. (FARPROC&)_pfnOleCreatePropertyFrameIndirect =
  64. _GetOlePropLibFunc("OleCreatePropertyFrameIndirect");
  65. if (_pfnOleCreatePropertyFrameIndirect == NULL)
  66. return E_FAIL;
  67. }
  68. return (*_pfnOleCreatePropertyFrameIndirect)(lpParams);
  69. }
  70. STDAPI _AfxOleTranslateColor(OLE_COLOR clr, HPALETTE hpal,
  71. COLORREF* lpcolorref)
  72. {
  73. if (_pfnOleTranslateColor == NULL)
  74. {
  75. (FARPROC&)_pfnOleTranslateColor =
  76. _GetOlePropLibFunc("OleTranslateColor");
  77. if (_pfnOleTranslateColor == NULL)
  78. return E_FAIL;
  79. }
  80. return (*_pfnOleTranslateColor)(clr, hpal, lpcolorref);
  81. }
  82. STDAPI _AfxOleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid,
  83. LPVOID* lplpvObj)
  84. {
  85. if (_pfnOleCreateFontIndirect == NULL)
  86. {
  87. (FARPROC&)_pfnOleCreateFontIndirect =
  88. _GetOlePropLibFunc("OleCreateFontIndirect");
  89. if (_pfnOleCreateFontIndirect == NULL)
  90. return E_FAIL;
  91. }
  92. return (*_pfnOleCreateFontIndirect)(lpFontDesc, riid, lplpvObj);
  93. }
  94. STDAPI _AfxOleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid,
  95. BOOL fOwn, LPVOID* lplpvObj)
  96. {
  97. if (_pfnOleCreatePictureIndirect == NULL)
  98. {
  99. (FARPROC&)_pfnOleCreatePictureIndirect =
  100. _GetOlePropLibFunc("OleCreatePictureIndirect");
  101. if (_pfnOleCreatePictureIndirect == NULL)
  102. return E_FAIL;
  103. }
  104. return (*_pfnOleCreatePictureIndirect)(lpPictDesc, riid, fOwn, lplpvObj);
  105. }
  106. STDAPI _AfxOleLoadPicture(LPSTREAM lpstream, LONG lSize, BOOL fRunmode,
  107. REFIID riid, LPVOID* lplpvObj)
  108. {
  109. if (_pfnOleLoadPicture == NULL)
  110. {
  111. (FARPROC&)_pfnOleLoadPicture =
  112. _GetOlePropLibFunc("OleLoadPicture");
  113. if (_pfnOleLoadPicture == NULL)
  114. return E_FAIL;
  115. }
  116. return (*_pfnOleLoadPicture)(lpstream, lSize, fRunmode, riid, lplpvObj);
  117. }