/*++ Copyright (c) Microsoft Corporation. All rights reserved. Module Name: spfusion.h Abstract: Wrappers and functions for fusionizing SetupAPI without effecting 3rd party DLL's and without dll-load overhead Author: Jamie Hunter (JamieHun) 12/4/2000 Revision History: --*/ // // redirect these API's to our internal implementation // that initializes fusion if needed // #ifdef FUSIONAWARE #undef CreateWindow #undef CreateWindowEx #undef CreateDialogParam #undef CreateDialogIndirectParam #undef DialogBoxParam #undef DialogBoxIndirectParam #undef MessageBox #undef PropertySheet #undef CreatePropertySheetPage #undef DestroyPropertySheetPage #undef ImageList_Create #undef ImageList_Destroy #undef ImageList_GetImageCount #undef ImageList_SetImageCount #undef ImageList_Add #undef ImageList_ReplaceIcon #undef ImageList_SetBkColor #undef ImageList_GetBkColor #undef ImageList_SetOverlayImage #undef GetOpenFileName #undef GetSaveFileName #undef ChooseColor #undef ChooseFont #undef CommDlgExtendedError #undef FindText #undef GetFileTitle #undef PageSetupDlg #undef PrintDlg #undef PrintDlgEx #undef ReplaceText #define CreateWindow spFusionCreateWindow #define CreateWindowEx spFusionCreateWindowEx #define CreateDialogParam spFusionCreateDialogParam #define CreateDialogIndirectParam spFusionCreateDialogIndirectParam #define DialogBoxParam spFusionDialogBoxParam #define DialogBoxIndirectParam spFusionDialogBoxIndirectParam #define MessageBox spFusionMessageBox #define PropertySheet spFusionPropertySheet #define CreatePropertySheetPage spFusionCreatePropertySheetPage #define DestroyPropertySheetPage spFusionDestroyPropertySheetPage #define ImageList_Create spFusionImageList_Create #define ImageList_Destroy spFusionImageList_Destroy #define ImageList_GetImageCount spFusionImageList_GetImageCount #define ImageList_SetImageCount spFusionImageList_SetImageCount #define ImageList_Add spFusionImageList_Add #define ImageList_ReplaceIcon spFusionImageList_ReplaceIcon #define ImageList_SetBkColor spFusionImageList_SetBkColor #define ImageList_GetBkColor spFusionImageList_GetBkColor #define ImageList_SetOverlayImage spFusionImageList_SetOverlayImage #define GetOpenFileName spFusionGetOpenFileName BOOL spFusionInitialize(); BOOL spFusionUninitialize(BOOL Full); HWND spFusionCreateWindow( LPCTSTR lpClassName, // registered class name LPCTSTR lpWindowName, // window name DWORD dwStyle, // window style int x, // horizontal position of window int y, // vertical position of window int nWidth, // window width int nHeight, // window height HWND hWndParent, // handle to parent or owner window HMENU hMenu, // menu handle or child identifier HINSTANCE hInstance, // handle to application instance LPVOID lpParam // window-creation data ); HWND spFusionCreateWindowEx( DWORD dwExStyle, // extended window style LPCTSTR lpClassName, // registered class name LPCTSTR lpWindowName, // window name DWORD dwStyle, // window style int x, // horizontal position of window int y, // vertical position of window int nWidth, // window width int nHeight, // window height HWND hWndParent, // handle to parent or owner window HMENU hMenu, // menu handle or child identifier HINSTANCE hInstance, // handle to application instance LPVOID lpParam // window-creation data ); HWND spFusionCreateDialogParam( HINSTANCE hInstance, // handle to module LPCTSTR lpTemplateName, // dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc, // dialog box procedure LPARAM dwInitParam // initialization value ); HWND spFusionCreateDialogIndirectParam( HINSTANCE hInstance, // handle to module LPCDLGTEMPLATE lpTemplate, // dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc, // dialog box procedure LPARAM lParamInit // initialization value ); INT_PTR spFusionDialogBoxParam( HINSTANCE hInstance, // handle to module LPCTSTR lpTemplateName, // dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc, // dialog box procedure LPARAM dwInitParam // initialization value ); INT_PTR spFusionDialogBoxIndirectParam( HINSTANCE hInstance, // handle to module LPCDLGTEMPLATE hDialogTemplate, // dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc, // dialog box procedure LPARAM dwInitParam // initialization value ); int spFusionMessageBox( IN HWND hWnd, IN LPCTSTR lpText, IN LPCTSTR lpCaption, IN UINT uType ); int spNonFusionMessageBox( IN HWND hWnd, IN LPCTSTR lpText, IN LPCTSTR lpCaption, IN UINT uType ); INT_PTR spFusionPropertySheet( LPCPROPSHEETHEADER pPropSheetHeader ); HPROPSHEETPAGE spFusionCreatePropertySheetPage( LPPROPSHEETPAGE pPropSheetPage ); BOOL spFusionDestroyPropertySheetPage( HPROPSHEETPAGE hPropSheetPage ); // // from commctrl.h // HIMAGELIST spFusionImageList_Create(int cx, int cy, UINT flags, int cInitial, int cGrow); BOOL spFusionImageList_Destroy(HIMAGELIST himl); int spFusionImageList_GetImageCount(HIMAGELIST himl); BOOL spFusionImageList_SetImageCount(HIMAGELIST himl, UINT uNewCount); int spFusionImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask); int spFusionImageList_ReplaceIcon(HIMAGELIST himl, int i, HICON hicon); COLORREF spFusionImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk); COLORREF spFusionImageList_GetBkColor(HIMAGELIST himl); BOOL spFusionImageList_SetOverlayImage(HIMAGELIST himl, int iImage, int iOverlay); // // from commdlg.h // BOOL spFusionGetOpenFileName(LPOPENFILENAME lpofn); // // private stuff // typedef struct _SPFUSIONINSTANCE { BOOL Acquired; ULONG_PTR Cookie; } SPFUSIONINSTANCE, *PSPFUSIONINSTANCE; HANDLE spFusionContextFromModule( IN PCTSTR ModuleName ); BOOL spFusionKillContext( IN HANDLE hContext ); BOOL spFusionEnterContext( IN HANDLE hContext, OUT PSPFUSIONINSTANCE pInst ); BOOL spFusionLeaveContext( IN PSPFUSIONINSTANCE pInst ); #else // // dummy structure/API's that do nothing // typedef struct _SPFUSIONINSTANCE { BOOL Acquired; } SPFUSIONINSTANCE, *PSPFUSIONINSTANCE; __inline HANDLE spFusionContextFromModule( IN PCTSTR ModuleName ) { ModuleName = ModuleName; return NULL; } __inline BOOL spFusionKillContext( IN HANDLE hContext ) { hContext = hContext; return TRUE; } __inline BOOL spFusionEnterContext( IN HANDLE hContext, OUT PSPFUSIONINSTANCE pInst ) { hContext = hContext; pInst->Acquired = TRUE; return TRUE; } __inline BOOL spFusionLeaveContext( IN PSPFUSIONINSTANCE pInst ) { pInst->Acquired = FALSE; return TRUE; } #endif // FUSIONAWARE