1*c2c66affSColin Finck #pragma once 2*c2c66affSColin Finck 3*c2c66affSColin Finck typedef struct _DESKDISPLAYADAPTER 4*c2c66affSColin Finck { 5*c2c66affSColin Finck const struct IShellPropSheetExtVtbl *lpIShellPropSheetExtVtbl; 6*c2c66affSColin Finck const struct IShellExtInitVtbl *lpIShellExtInitVtbl; 7*c2c66affSColin Finck const struct IClassFactoryVtbl *lpIClassFactoryVtbl; 8*c2c66affSColin Finck DWORD ref; 9*c2c66affSColin Finck 10*c2c66affSColin Finck HWND hwndDlg; 11*c2c66affSColin Finck PDESK_EXT_INTERFACE DeskExtInterface; 12*c2c66affSColin Finck IDataObject *pdtobj; 13*c2c66affSColin Finck LPTSTR lpDeviceId; 14*c2c66affSColin Finck PDEVMODEW lpSelDevMode; 15*c2c66affSColin Finck PDEVMODEW lpDevModeOnInit; 16*c2c66affSColin Finck } DESKDISPLAYADAPTER, *PDESKDISPLAYADAPTER; 17*c2c66affSColin Finck 18*c2c66affSColin Finck extern LONG dll_refs; 19*c2c66affSColin Finck 20*c2c66affSColin Finck #define impl_to_interface(impl,iface) (struct iface *)(&(impl)->lp##iface##Vtbl) 21*c2c66affSColin Finck #define interface_to_impl(instance,iface) ((PDESKDISPLAYADAPTER)((ULONG_PTR)instance - FIELD_OFFSET(DESKDISPLAYADAPTER,lp##iface##Vtbl))) 22*c2c66affSColin Finck 23*c2c66affSColin Finck HRESULT 24*c2c66affSColin Finck IDeskDisplayAdapter_Constructor(REFIID riid, 25*c2c66affSColin Finck LPVOID *ppv); 26*c2c66affSColin Finck 27*c2c66affSColin Finck VOID 28*c2c66affSColin Finck IDeskDisplayAdapter_InitIface(PDESKDISPLAYADAPTER This); 29*c2c66affSColin Finck 30*c2c66affSColin Finck HRESULT STDMETHODCALLTYPE 31*c2c66affSColin Finck IDeskDisplayAdapter_QueryInterface(PDESKDISPLAYADAPTER This, 32*c2c66affSColin Finck REFIID iid, 33*c2c66affSColin Finck PVOID *pvObject); 34*c2c66affSColin Finck 35*c2c66affSColin Finck ULONG 36*c2c66affSColin Finck IDeskDisplayAdapter_AddRef(PDESKDISPLAYADAPTER This); 37*c2c66affSColin Finck 38*c2c66affSColin Finck ULONG 39*c2c66affSColin Finck IDeskDisplayAdapter_Release(PDESKDISPLAYADAPTER This); 40*c2c66affSColin Finck 41*c2c66affSColin Finck HRESULT 42*c2c66affSColin Finck IDeskDisplayAdapter_Initialize(PDESKDISPLAYADAPTER This, 43*c2c66affSColin Finck LPCITEMIDLIST pidlFolder, 44*c2c66affSColin Finck IDataObject *pdtobj, 45*c2c66affSColin Finck HKEY hkeyProgID); 46*c2c66affSColin Finck 47*c2c66affSColin Finck HRESULT 48*c2c66affSColin Finck IDeskDisplayAdapter_AddPages(PDESKDISPLAYADAPTER This, 49*c2c66affSColin Finck LPFNADDPROPSHEETPAGE pfnAddPage, 50*c2c66affSColin Finck LPARAM lParam); 51*c2c66affSColin Finck 52*c2c66affSColin Finck HRESULT 53*c2c66affSColin Finck IDeskDisplayAdapter_ReplacePage(PDESKDISPLAYADAPTER This, 54*c2c66affSColin Finck EXPPS uPageID, 55*c2c66affSColin Finck LPFNADDPROPSHEETPAGE pfnReplacePage, 56*c2c66affSColin Finck LPARAM lParam); 57*c2c66affSColin Finck 58*c2c66affSColin Finck static const GUID CLSID_IDeskDisplayAdapter = {0x42071712,0x76d4,0x11d1,{0x8b,0x24,0x00,0xa0,0xc9,0x06,0x8f,0xf3}}; 59*c2c66affSColin Finck 60*c2c66affSColin Finck ULONG __cdecl DbgPrint(PCCH Format,...); 61