Go to the documentation of this file.00001 #pragma once
00002
00003 extern HINSTANCE hInstance;
00004
00005 typedef struct _CITEM
00006 {
00007 struct _CITEM *next;
00008 TCHAR szName[256];
00009 TCHAR szKeyName[256];
00010 DWORD MajorVersion;
00011 DWORD MinorVersion;
00012 DWORD BuildNumber;
00013 DWORD PlatformId;
00014 DWORD SPMajorVersion;
00015 DWORD SPMinorVersion;
00016 } CITEM, *PCITEM;
00017
00018
00019
00020
00021
00022 static const GUID CLSID_ICompatibilityPage = {0x513D916F,0x2A8E,0x4F51,{0xAE,0xAB,0x0C,0xBC,0x76,0xFB,0x1A,0xF9}};
00023
00024 typedef struct ICompatibilityPage *LPCOMPATIBILITYPAGE;
00025
00026
00027 typedef struct ifaceIShellPropSheetExtVbtl ifaceIShellPropSheetExtVbtl;
00028 struct ifaceIShellPropSheetExtVbtl
00029 {
00030 HRESULT (STDMETHODCALLTYPE *AddPages)(LPCOMPATIBILITYPAGE this,
00031 LPFNADDPROPSHEETPAGE lpfnAddPage,
00032 LPARAM lParam);
00033 HRESULT (STDMETHODCALLTYPE *ReplacePage)(LPCOMPATIBILITYPAGE this,
00034 UINT uPageID,
00035 LPFNADDPROPSHEETPAGE lpfnReplacePage,
00036 LPARAM lParam);
00037 };
00038
00039
00040 typedef struct ifaceIShellExtInitVbtl ifaceIShellExtInitVbtl;
00041 struct ifaceIShellExtInitVbtl
00042 {
00043 HRESULT (STDMETHODCALLTYPE *Initialize)(LPCOMPATIBILITYPAGE this,
00044 LPCITEMIDLIST pidlFolder,
00045 IDataObject *pdtobj,
00046 HKEY hkeyProgID);
00047 };
00048
00049
00050 typedef struct ifaceIClassFactoryVbtl ifaceIClassFactoryVbtl;
00051 struct ifaceIClassFactoryVbtl
00052 {
00053 HRESULT (STDMETHODCALLTYPE *CreateInstance)(LPCOMPATIBILITYPAGE this,
00054 LPUNKNOWN pUnkOuter,
00055 REFIID riid,
00056 PVOID *ppvObject);
00057 HRESULT (STDMETHODCALLTYPE *LockServer)(LPCOMPATIBILITYPAGE this,
00058 BOOL fLock);
00059 };
00060
00061
00062 typedef struct ifaceICompatibilityPageVbtl ifaceICompatibilityPageVbtl;
00063 struct ifaceICompatibilityPageVbtl
00064 {
00065
00066 HRESULT (STDMETHODCALLTYPE *QueryInterface)(LPCOMPATIBILITYPAGE this,
00067 REFIID iid,
00068 PVOID *pvObject);
00069 ULONG (STDMETHODCALLTYPE *AddRef)(LPCOMPATIBILITYPAGE this);
00070 ULONG (STDMETHODCALLTYPE *Release)(LPCOMPATIBILITYPAGE this);
00071
00072 union
00073 {
00074 ifaceIShellPropSheetExtVbtl IShellPropSheetExt;
00075 ifaceIShellExtInitVbtl IShellExtInit;
00076 ifaceIClassFactoryVbtl IClassFactory;
00077 } fn;
00078 };
00079
00080 typedef struct ICompatibilityPage
00081 {
00082
00083 ifaceICompatibilityPageVbtl* lpVtbl;
00084 LONG ref;
00085
00086 TCHAR szFile[MAX_PATH + 1];
00087 BOOL Changed;
00088
00089 PCITEM CItems;
00090 PCITEM CSelectedItem;
00091 UINT nItems;
00092 } COMPATIBILITYPAGE;
00093
00094
00095 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnQueryInterface(LPCOMPATIBILITYPAGE this,
00096 REFIID iid,
00097 PVOID *pvObject);
00098 ULONG STDMETHODCALLTYPE ICompatibilityPage_fnAddRef(LPCOMPATIBILITYPAGE this);
00099 ULONG STDMETHODCALLTYPE ICompatibilityPage_fnRelease(LPCOMPATIBILITYPAGE this);
00100
00101
00102 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnAddPages(LPCOMPATIBILITYPAGE this,
00103 LPFNADDPROPSHEETPAGE lpfnAddPage,
00104 LPARAM lParam);
00105 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnReplacePage(LPCOMPATIBILITYPAGE this,
00106 UINT uPageID,
00107 LPFNADDPROPSHEETPAGE lpfnReplacePage,
00108 LPARAM lParam);
00109
00110 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnInitialize(LPCOMPATIBILITYPAGE this,
00111 LPCITEMIDLIST pidlFolder,
00112 IDataObject *pdtobj,
00113 HKEY hkeyProgID);
00114
00115 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnCreateInstance(LPCOMPATIBILITYPAGE this,
00116 LPUNKNOWN pUnkOuter,
00117 REFIID riid,
00118 PVOID *ppvObject);
00119 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnLockServer(LPCOMPATIBILITYPAGE this,
00120 BOOL fLock);
00121
00122