home *** CD-ROM | disk | FTP | other *** search
/ Supercompiler 1997 / SUPERCOMPILER97.iso / MS_VC.50 / VC / MFC / SRC / OLEPRO32.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-30  |  3.9 KB  |  141 lines

  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.  
  11. #include "stdafx.h"
  12.  
  13. HINSTANCE volatile _hOlePropLib = NULL;
  14. HRESULT (STDAPICALLTYPE *_pfnOleCreatePropertyFrame)(HWND, UINT, UINT,
  15.     LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, LPVOID) =
  16.     NULL;
  17. HRESULT (STDAPICALLTYPE *_pfnOleCreatePropertyFrameIndirect)(LPOCPFIPARAMS) =
  18.     NULL;
  19. HRESULT (STDAPICALLTYPE *_pfnOleTranslateColor)(OLE_COLOR, HPALETTE,
  20.     COLORREF*) = NULL;
  21. HRESULT (STDAPICALLTYPE *_pfnOleCreateFontIndirect)(LPFONTDESC, REFIID,
  22.     LPVOID*) = NULL;
  23. HRESULT (STDAPICALLTYPE *_pfnOleCreatePictureIndirect)(LPPICTDESC, REFIID,
  24.     BOOL, LPVOID*) = NULL;
  25. HRESULT (STDAPICALLTYPE *_pfnOleLoadPicture)(LPSTREAM, LONG, BOOL, REFIID,
  26.     LPVOID*) = NULL;
  27.  
  28. FARPROC AFXAPI _GetOlePropLibFunc(LPCSTR pszFuncName)
  29. {
  30.     if (_hOlePropLib == NULL)
  31.     {
  32.         AfxLockGlobals(CRIT_DYNDLLLOAD);
  33.         if (_hOlePropLib == NULL)
  34.         {
  35. #ifndef _MAC
  36.             _hOlePropLib = LoadLibraryA("OLEPRO32.DLL");
  37. #else
  38.             _hOlePropLib = LoadLibraryEx("OLEPRO32.DLL", NULL, LOAD_BY_FRAGMENT_NAME);
  39. #endif
  40.         }
  41.         AfxUnlockGlobals(CRIT_DYNDLLLOAD);
  42.     }
  43.  
  44.     FARPROC pfnProc = NULL;
  45.     if (_hOlePropLib != NULL)
  46.         pfnProc = GetProcAddress(_hOlePropLib, pszFuncName);
  47.  
  48.     return pfnProc;
  49. }
  50.  
  51. STDAPI _AfxOleCreatePropertyFrame(HWND hwndOwner, UINT x, UINT y,
  52.     LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN* ppUnk, ULONG cPages,
  53.     LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, LPVOID pvReserved)
  54. {
  55.     if (_pfnOleCreatePropertyFrame == NULL)
  56.     {
  57.         (FARPROC&)_pfnOleCreatePropertyFrame =
  58.             _GetOlePropLibFunc("OleCreatePropertyFrame");
  59.  
  60.         if (_pfnOleCreatePropertyFrame == NULL)
  61.             return E_FAIL;
  62.     }
  63.  
  64.     return (*_pfnOleCreatePropertyFrame)(hwndOwner, x, y, lpszCaption,
  65.         cObjects, ppUnk, cPages, pPageClsID, lcid, dwReserved, pvReserved);
  66. }
  67.  
  68. STDAPI _AfxOleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
  69. {
  70.     if (_pfnOleCreatePropertyFrameIndirect == NULL)
  71.     {
  72.         (FARPROC&)_pfnOleCreatePropertyFrameIndirect =
  73.             _GetOlePropLibFunc("OleCreatePropertyFrameIndirect");
  74.  
  75.         if (_pfnOleCreatePropertyFrameIndirect == NULL)
  76.             return E_FAIL;
  77.     }
  78.  
  79.     return (*_pfnOleCreatePropertyFrameIndirect)(lpParams);
  80. }
  81.  
  82. STDAPI _AfxOleTranslateColor(OLE_COLOR clr, HPALETTE hpal,
  83.     COLORREF* lpcolorref)
  84. {
  85.     if (_pfnOleTranslateColor == NULL)
  86.     {
  87.         (FARPROC&)_pfnOleTranslateColor =
  88.             _GetOlePropLibFunc("OleTranslateColor");
  89.  
  90.         if (_pfnOleTranslateColor == NULL)
  91.             return E_FAIL;
  92.     }
  93.  
  94.     return (*_pfnOleTranslateColor)(clr, hpal, lpcolorref);
  95. }
  96.  
  97. STDAPI _AfxOleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid,
  98.     LPVOID* lplpvObj)
  99. {
  100.     if (_pfnOleCreateFontIndirect == NULL)
  101.     {
  102.         (FARPROC&)_pfnOleCreateFontIndirect =
  103.             _GetOlePropLibFunc("OleCreateFontIndirect");
  104.  
  105.         if (_pfnOleCreateFontIndirect == NULL)
  106.             return E_FAIL;
  107.     }
  108.  
  109.     return (*_pfnOleCreateFontIndirect)(lpFontDesc, riid, lplpvObj);
  110. }
  111.  
  112. STDAPI _AfxOleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid,
  113.     BOOL fOwn, LPVOID* lplpvObj)
  114. {
  115.     if (_pfnOleCreatePictureIndirect == NULL)
  116.     {
  117.         (FARPROC&)_pfnOleCreatePictureIndirect =
  118.             _GetOlePropLibFunc("OleCreatePictureIndirect");
  119.  
  120.         if (_pfnOleCreatePictureIndirect == NULL)
  121.             return E_FAIL;
  122.     }
  123.  
  124.     return (*_pfnOleCreatePictureIndirect)(lpPictDesc, riid, fOwn, lplpvObj);
  125. }
  126.  
  127. STDAPI _AfxOleLoadPicture(LPSTREAM lpstream, LONG lSize, BOOL fRunmode,
  128.     REFIID riid, LPVOID* lplpvObj)
  129. {
  130.     if (_pfnOleLoadPicture == NULL)
  131.     {
  132.         (FARPROC&)_pfnOleLoadPicture =
  133.             _GetOlePropLibFunc("OleLoadPicture");
  134.  
  135.         if (_pfnOleLoadPicture == NULL)
  136.             return E_FAIL;
  137.     }
  138.  
  139.     return (*_pfnOleLoadPicture)(lpstream, lSize, fRunmode, riid, lplpvObj);
  140. }
  141.