ReactOS 0.4.16-dev-306-g647d351
browseui.cpp
Go to the documentation of this file.
1/*
2 * ReactOS Explorer
3 *
4 * Copyright 2009 Andrew Hill <ash77 at domain reactos.org>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#include "precomp.h"
22
23
25{
26#if USE_CUSTOM_ADDRESSBAND
27 return ShellObjectCreator<CAddressBand>(riid, ppv);
28#else
29 return CoCreateInstance(CLSID_SH_AddressBand, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IUnknown, toolsBar));
30#endif
31}
32
34{
35#if USE_CUSTOM_ADDRESSEDITBOX
36 return ShellObjectCreator<CAddressEditBox>(riid, ppv);
37#else
38 return CoCreateInstance(CLSID_AddressEditBox, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(riid, &ppv));
39#endif
40}
41
43{
44#if USE_CUSTOM_BANDPROXY
45 return ShellObjectCreator<CBandProxy>(riid, ppv);
46#else
47 return CoCreateInstance(CLSID_BandProxy, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(riid, &ppv));
48#endif
49}
50
52{
53#if USE_CUSTOM_BRANDBAND
54 return ShellObjectCreator<CBrandBand>(riid, ppv);
55#else
56 return CoCreateInstance(CLSID_BrandBand, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
57#endif
58}
59
61{
62#if USE_CUSTOM_SEARCHBAND
63 return ShellObjectCreator<CSearchBar>(riid, ppv);
64#else
65 return CoCreateInstance(CLSID_FileSearchBand, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
66#endif
67}
68
70{
71#if USE_CUSTOM_EXPLORERBAND
72 return ShellObjectCreator<CExplorerBand>(riid, ppv);
73#else
74 return CoCreateInstance(CLSID_ExplorerBand, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
75#endif
76}
77
79{
80#if USE_CUSTOM_INTERNETTOOLBAR
81 return ShellObjectCreator<CInternetToolbar>(riid, ppv);
82#else
83 return CoCreateInstance(CLSID_InternetToolbar, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
84#endif
85}
86
89
91{
92#if USE_CUSTOM_MERGEDFOLDER
93 HMODULE hRShell = GetModuleHandle(L"rshell.dll");
94 if (!hRShell)
95 hRShell = LoadLibrary(L"rshell.dll");
96
97 if (hRShell)
98 {
99 PMERGEDFOLDER_CREATEINSTANCE pCMergedFolder_CreateInstance = (PMERGEDFOLDER_CREATEINSTANCE)
100 GetProcAddress(hRShell, "CMergedFolder_CreateInstance");
101
102 if (pCMergedFolder_CreateInstance)
103 {
104 return pCMergedFolder_CreateInstance(riid, ppv);
105 }
106 }
107#endif
108 return CoCreateInstance(CLSID_MergedFolder, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
109}
110
112{
113#if USE_CUSTOM_MENUBAND
114 HMODULE hRShell = GetModuleHandleW(L"rshell.dll");
115
116 if (!hRShell)
117 hRShell = LoadLibraryW(L"rshell.dll");
118
119 if (hRShell)
120 {
121 PMENUBAND_CREATEINSTANCE func = (PMENUBAND_CREATEINSTANCE) GetProcAddress(hRShell, "CMenuBand_CreateInstance");
122 if (func)
123 {
124 return func(iid , ppv);
125 }
126 }
127#endif
128 return CoCreateInstance(CLSID_MenuBand, NULL, CLSCTX_INPROC_SERVER, iid, ppv);
129}
130
131
133{
134public:
135};
136
137
138BEGIN_OBJECT_MAP(ObjectMap)
139OBJECT_ENTRY(CLSID_ACLCustomMRU, CACLCustomMRU)
140OBJECT_ENTRY(CLSID_AutoComplete, CAutoComplete)
141OBJECT_ENTRY(CLSID_ACLHistory, CACLHistory)
142OBJECT_ENTRY(CLSID_ACLMulti, CACLMulti)
143OBJECT_ENTRY(CLSID_ACListISF, CACListISF)
144OBJECT_ENTRY(CLSID_SH_AddressBand, CAddressBand)
145OBJECT_ENTRY(CLSID_AddressEditBox, CAddressEditBox)
146OBJECT_ENTRY(CLSID_BandProxy, CBandProxy)
147OBJECT_ENTRY(CLSID_RebarBandSite, CBandSite)
148OBJECT_ENTRY(CLSID_BandSiteMenu, CBandSiteMenu)
149OBJECT_ENTRY(CLSID_BrandBand, CBrandBand)
150OBJECT_ENTRY(CLSID_CCommonBrowser, CCommonBrowser)
151OBJECT_ENTRY(CLSID_GlobalFolderSettings, CGlobalFolderSettings)
152OBJECT_ENTRY(CLSID_InternetToolbar, CInternetToolbar)
153OBJECT_ENTRY(CLSID_CRegTreeOptions, CRegTreeOptions)
154OBJECT_ENTRY(CLSID_ShellTaskScheduler, CShellTaskScheduler)
155OBJECT_ENTRY(CLSID_TaskbarList, CTaskbarList)
156//OBJECT_ENTRY(CLSID_ExplorerBand, CExplorerBand) // Moved to shdocvw.dll
157OBJECT_ENTRY(CLSID_FileSearchBand, CSearchBar)
158OBJECT_ENTRY(CLSID_ProgressDialog, CProgressDialog)
159OBJECT_ENTRY(CLSID_ISFBand, CISFBand)
160OBJECT_ENTRY(CLSID_FindFolder, CFindFolder)
161OBJECT_ENTRY(CLSID_UserAssist, CUserAssist)
163
166
167/*************************************************************************
168 * BROWSEUI DllMain
169 */
171{
172 TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad);
173
175 {
176 gModule.Init(ObjectMap, hInstance, NULL);
178 }
179 else if (dwReason == DLL_PROCESS_DETACH)
180 {
181 gModule.Term();
182 }
183 return TRUE;
184}
185
186/***********************************************************************
187 * DllCanUnloadNow (BROWSEUI.@)
188 */
190{
191 return gModule.DllCanUnloadNow();
192}
193
194/***********************************************************************
195 * DllGetClassObject (BROWSEUI.@)
196 */
198{
199 return gModule.DllGetClassObject(rclsid, riid, ppv);
200}
201
202/***********************************************************************
203 * DllRegisterServer (BROWSEUI.@)
204 */
206{
208}
209
210/***********************************************************************
211 * DllUnregisterServer (BROWSEUI.@)
212 */
214{
216}
217
218/***********************************************************************
219 * DllGetVersion (BROWSEUI.@)
220 */
222{
223 if (info->cbSize != sizeof(DLLVERSIONINFO)) FIXME("support DLLVERSIONINFO2\n");
224
225 /* this is what IE6 on Windows 98 reports */
226 info->dwMajorVersion = 6;
227 info->dwMinorVersion = 0;
228 info->dwBuildNumber = 2600;
229 info->dwPlatformID = DLLVER_PLATFORM_WINDOWS;
230
231 return NOERROR;
232}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define STDAPI_(t)
Definition: basetyps.h:42
#define STDAPI
Definition: basetyps.h:41
HRESULT CInternetToolbar_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:78
HRESULT CExplorerBand_CreateInstance(REFIID riid, LPVOID *ppv)
Definition: browseui.cpp:69
CAtlWinModule gWinModule
Definition: browseui.cpp:165
DWORD LPVOID fImpLoad
Definition: browseui.cpp:171
STDAPI DllRegisterServer()
Definition: browseui.cpp:205
STDAPI DllCanUnloadNow()
Definition: browseui.cpp:189
STDAPI DllUnregisterServer()
Definition: browseui.cpp:213
HRESULT CAddressBand_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:24
HRESULT(WINAPI * PMERGEDFOLDER_CREATEINSTANCE)(REFIID riid, void **ppv)
Definition: browseui.cpp:88
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: browseui.cpp:197
return TRUE
Definition: browseui.cpp:183
DWORD dwReason
Definition: browseui.cpp:170
HRESULT CBrandBand_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:51
HRESULT CBandProxy_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:42
HRESULT(WINAPI * PMENUBAND_CREATEINSTANCE)(REFIID riid, void **ppv)
Definition: browseui.cpp:87
STDAPI DllGetVersion(DLLVERSIONINFO *info)
Definition: browseui.cpp:221
HRESULT CSearchBar_CreateInstance(REFIID riid, LPVOID *ppv)
Definition: browseui.cpp:60
HRESULT CAddressEditBox_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:33
CBrowseUIModule gModule
Definition: browseui.cpp:164
HINSTANCE hInstance
Definition: charmap.c:19
void Term()
Definition: atlbase.h:916
HRESULT DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: atlbase.h:1037
HRESULT DllUnregisterServer(BOOL bUnRegTypeLib=TRUE)
Definition: atlbase.h:1047
HRESULT Init(_ATL_OBJMAP_ENTRY *p, HINSTANCE, const GUID *plibid)
Definition: atlbase.h:886
HRESULT DllCanUnloadNow()
Definition: atlbase.h:1030
HRESULT DllRegisterServer(BOOL bRegTypeLib=TRUE)
Definition: atlbase.h:1042
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
#define GetProcAddress(x, y)
Definition: compat.h:753
#define LoadLibraryW(x)
Definition: compat.h:747
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum func
Definition: glext.h:6028
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
BOOL WINAPI DllMain(IN HINSTANCE hinstDLL, IN DWORD dwReason, IN LPVOID lpvReserved)
Definition: kbsdll.c:95
#define END_OBJECT_MAP()
Definition: atlcom.h:691
#define OBJECT_ENTRY(clsid, class)
Definition: atlcom.h:693
#define BEGIN_OBJECT_MAP(x)
Definition: atlcom.h:689
#define L(x)
Definition: ntvdm.h:50
#define REFIID
Definition: guiddef.h:118
#define REFCLSID
Definition: guiddef.h:117
#define CMergedFolder_CreateInstance
Definition: shellmenu.h:93
#define CMenuBand_CreateInstance
Definition: shellmenu.h:81
#define DLLVER_PLATFORM_WINDOWS
Definition: shlwapi.h:1989
#define TRACE(s)
Definition: solgame.cpp:4
#define LoadLibrary
Definition: winbase.h:3887
#define GetModuleHandle
Definition: winbase.h:3852
#define WINAPI
Definition: msvc.h:6
#define NOERROR
Definition: winerror.h:2354
#define IID_PPV_ARG(Itype, ppType)