home *** CD-ROM | disk | FTP | other *** search
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1997 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
- #include "stdafx.h"
-
- HINSTANCE volatile _hOlePropLib = NULL;
- HRESULT (STDAPICALLTYPE *_pfnOleCreatePropertyFrame)(HWND, UINT, UINT,
- LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, LPVOID) =
- NULL;
- HRESULT (STDAPICALLTYPE *_pfnOleCreatePropertyFrameIndirect)(LPOCPFIPARAMS) =
- NULL;
- HRESULT (STDAPICALLTYPE *_pfnOleTranslateColor)(OLE_COLOR, HPALETTE,
- COLORREF*) = NULL;
- HRESULT (STDAPICALLTYPE *_pfnOleCreateFontIndirect)(LPFONTDESC, REFIID,
- LPVOID*) = NULL;
- HRESULT (STDAPICALLTYPE *_pfnOleCreatePictureIndirect)(LPPICTDESC, REFIID,
- BOOL, LPVOID*) = NULL;
- HRESULT (STDAPICALLTYPE *_pfnOleLoadPicture)(LPSTREAM, LONG, BOOL, REFIID,
- LPVOID*) = NULL;
-
- FARPROC AFXAPI _GetOlePropLibFunc(LPCSTR pszFuncName)
- {
- if (_hOlePropLib == NULL)
- {
- AfxLockGlobals(CRIT_DYNDLLLOAD);
- if (_hOlePropLib == NULL)
- {
- #ifndef _MAC
- _hOlePropLib = LoadLibraryA("OLEPRO32.DLL");
- #else
- _hOlePropLib = LoadLibraryEx("OLEPRO32.DLL", NULL, LOAD_BY_FRAGMENT_NAME);
- #endif
- }
- AfxUnlockGlobals(CRIT_DYNDLLLOAD);
- }
-
- FARPROC pfnProc = NULL;
- if (_hOlePropLib != NULL)
- pfnProc = GetProcAddress(_hOlePropLib, pszFuncName);
-
- return pfnProc;
- }
-
- STDAPI _AfxOleCreatePropertyFrame(HWND hwndOwner, UINT x, UINT y,
- LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN* ppUnk, ULONG cPages,
- LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, LPVOID pvReserved)
- {
- if (_pfnOleCreatePropertyFrame == NULL)
- {
- (FARPROC&)_pfnOleCreatePropertyFrame =
- _GetOlePropLibFunc("OleCreatePropertyFrame");
-
- if (_pfnOleCreatePropertyFrame == NULL)
- return E_FAIL;
- }
-
- return (*_pfnOleCreatePropertyFrame)(hwndOwner, x, y, lpszCaption,
- cObjects, ppUnk, cPages, pPageClsID, lcid, dwReserved, pvReserved);
- }
-
- STDAPI _AfxOleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
- {
- if (_pfnOleCreatePropertyFrameIndirect == NULL)
- {
- (FARPROC&)_pfnOleCreatePropertyFrameIndirect =
- _GetOlePropLibFunc("OleCreatePropertyFrameIndirect");
-
- if (_pfnOleCreatePropertyFrameIndirect == NULL)
- return E_FAIL;
- }
-
- return (*_pfnOleCreatePropertyFrameIndirect)(lpParams);
- }
-
- STDAPI _AfxOleTranslateColor(OLE_COLOR clr, HPALETTE hpal,
- COLORREF* lpcolorref)
- {
- if (_pfnOleTranslateColor == NULL)
- {
- (FARPROC&)_pfnOleTranslateColor =
- _GetOlePropLibFunc("OleTranslateColor");
-
- if (_pfnOleTranslateColor == NULL)
- return E_FAIL;
- }
-
- return (*_pfnOleTranslateColor)(clr, hpal, lpcolorref);
- }
-
- STDAPI _AfxOleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid,
- LPVOID* lplpvObj)
- {
- if (_pfnOleCreateFontIndirect == NULL)
- {
- (FARPROC&)_pfnOleCreateFontIndirect =
- _GetOlePropLibFunc("OleCreateFontIndirect");
-
- if (_pfnOleCreateFontIndirect == NULL)
- return E_FAIL;
- }
-
- return (*_pfnOleCreateFontIndirect)(lpFontDesc, riid, lplpvObj);
- }
-
- STDAPI _AfxOleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid,
- BOOL fOwn, LPVOID* lplpvObj)
- {
- if (_pfnOleCreatePictureIndirect == NULL)
- {
- (FARPROC&)_pfnOleCreatePictureIndirect =
- _GetOlePropLibFunc("OleCreatePictureIndirect");
-
- if (_pfnOleCreatePictureIndirect == NULL)
- return E_FAIL;
- }
-
- return (*_pfnOleCreatePictureIndirect)(lpPictDesc, riid, fOwn, lplpvObj);
- }
-
- STDAPI _AfxOleLoadPicture(LPSTREAM lpstream, LONG lSize, BOOL fRunmode,
- REFIID riid, LPVOID* lplpvObj)
- {
- if (_pfnOleLoadPicture == NULL)
- {
- (FARPROC&)_pfnOleLoadPicture =
- _GetOlePropLibFunc("OleLoadPicture");
-
- if (_pfnOleLoadPicture == NULL)
- return E_FAIL;
- }
-
- return (*_pfnOleLoadPicture)(lpstream, lSize, fRunmode, riid, lplpvObj);
- }
-