[BROWSEUI]
[reactos.git] / reactos / dll / win32 / browseui / browseui.h
1 #pragma once
2
3 #define USE_CUSTOM_MENUBAND 1
4 #define USE_CUSTOM_MERGEDFOLDER 1
5 #define USE_CUSTOM_ADDRESSBAND 1
6 #define USE_CUSTOM_ADDRESSEDITBOX 1
7 #define USE_CUSTOM_BANDPROXY 1
8 #define USE_CUSTOM_BRANDBAND 1
9 #define USE_CUSTOM_EXPLORERBAND 1
10 #define USE_CUSTOM_INTERNETTOOLBAR 1
11
12 /* Constructors for the classes that are not exported */
13 HRESULT CShellBrowser_CreateInstance(LPITEMIDLIST pidl, DWORD dwFlags, REFIID riid, void **ppv);
14 HRESULT CTravelLog_CreateInstance(REFIID riid, void **ppv);
15 HRESULT CBaseBar_CreateInstance(REFIID riid, void **ppv, BOOL vertical);
16 HRESULT CBaseBarSite_CreateInstance(REFIID riid, void **ppv, BOOL bVertical);
17 HRESULT CToolsBand_CreateInstance(REFIID riid, void **ppv);
18
19 static inline
20 HRESULT CAddressBand_CreateInstance(REFIID riid, void **ppv)
21 {
22 #if USE_CUSTOM_ADDRESSBAND
23 return ShellObjectCreator<CAddressBand>(riid, ppv);
24 #else
25 return CoCreateInstance(CLSID_SH_AddressBand, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IUnknown, toolsBar));
26 #endif
27 }
28
29 static inline
30 HRESULT CAddressEditBox_CreateInstance(REFIID riid, void **ppv)
31 {
32 #if USE_CUSTOM_ADDRESSEDITBOX
33 return ShellObjectCreator<CAddressEditBox>(riid, ppv);
34 #else
35 return CoCreateInstance(CLSID_AddressEditBox, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(riid, &ppv));
36 #endif
37 }
38
39 static inline
40 HRESULT CBandProxy_CreateInstance(REFIID riid, void **ppv)
41 {
42 #if USE_CUSTOM_BANDPROXY
43 return ShellObjectCreator<CBandProxy>(riid, ppv);
44 #else
45 return CoCreateInstance(CLSID_BandProxy, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(riid, &ppv));
46 #endif
47 }
48
49 static inline
50 HRESULT CBrandBand_CreateInstance(REFIID riid, void **ppv)
51 {
52 #if USE_CUSTOM_BRANDBAND
53 return ShellObjectCreator<CBrandBand>(riid, ppv);
54 #else
55 return CoCreateInstance(CLSID_BrandBand, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
56 #endif
57 }
58
59 static inline
60 HRESULT WINAPI CExplorerBand_CreateInstance(REFIID riid, LPVOID *ppv)
61 {
62 #if USE_CUSTOM_EXPLORERBAND
63 return ShellObjectCreator<CExplorerBand>(riid, ppv);
64 #else
65 return CoCreateInstance(CLSID_ExplorerBand, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
66 #endif
67 }
68
69 static inline
70 HRESULT CInternetToolbar_CreateInstance(REFIID riid, void **ppv)
71 {
72 #if USE_CUSTOM_INTERNETTOOLBAR
73 return ShellObjectCreator<CInternetToolbar>(riid, ppv);
74 #else
75 return CoCreateInstance(CLSID_InternetToolbar, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
76 #endif
77 }
78
79 typedef HRESULT(WINAPI * PMENUBAND_CONSTRUCTOR)(REFIID riid, void **ppv);
80 typedef HRESULT(WINAPI * PMERGEDFOLDER_CONSTRUCTOR)(REFIID riid, void **ppv);
81
82 static inline
83 HRESULT CMergedFolder_CreateInstance(REFIID riid, void **ppv)
84 {
85 #if USE_CUSTOM_MERGEDFOLDER
86 HMODULE hRShell = GetModuleHandle(L"rshell.dll");
87 if (!hRShell)
88 hRShell = LoadLibrary(L"rshell.dll");
89
90 if (hRShell)
91 {
92 PMERGEDFOLDER_CONSTRUCTOR pCMergedFolder_Constructor = (PMERGEDFOLDER_CONSTRUCTOR)
93 GetProcAddress(hRShell, "CMergedFolder_Constructor");
94
95 if (pCMergedFolder_Constructor)
96 {
97 return pCMergedFolder_Constructor(riid, ppv);
98 }
99 }
100 #endif
101 return CoCreateInstance(CLSID_MergedFolder, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
102 }
103
104 static inline
105 HRESULT CMenuBand_CreateInstance(REFIID iid, LPVOID *ppv)
106 {
107 #if USE_CUSTOM_MENUBAND
108 HMODULE hRShell = GetModuleHandleW(L"rshell.dll");
109
110 if (!hRShell)
111 hRShell = LoadLibraryW(L"rshell.dll");
112
113 if (hRShell)
114 {
115 PMENUBAND_CONSTRUCTOR func = (PMENUBAND_CONSTRUCTOR) GetProcAddress(hRShell, "CMenuBand_Constructor");
116 if (func)
117 {
118 return func(iid , ppv);
119 }
120 }
121 #endif
122 return CoCreateInstance(CLSID_MenuBand, NULL, CLSCTX_INPROC_SERVER, iid, ppv);
123 }