276 lines
7.8 KiB
C
276 lines
7.8 KiB
C
|
/*++
|
||
|
|
||
|
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
|
||
|
|