1 #ifndef _EXPLORER_PRECOMP__H_
2 #define _EXPLORER_PRECOMP__H_
4 #define WIN7_COMPAT_MODE 0
9 #define WIN32_NO_STATUS
11 #define COM_NO_WINDOWS_H
30 #include <undocuser.h>
31 #include <shlwapi_undoc.h>
32 #include <shlobj_undoc.h>
33 #include <shlguid_undoc.h>
34 #include <undocshell.h>
37 #include <shellutils.h>
42 #include <wine/debug.h>
44 WINE_DEFAULT_DEBUG_CHANNEL(explorernew
);
46 #define ASSERT(cond) \
48 Win32DbgPrint(__FILE__, __LINE__, "ASSERTION %s FAILED!\n", #cond); \
51 extern HINSTANCE hExplorerInstance
;
52 extern HANDLE hProcessHeap
;
53 extern HKEY hkExplorer
;
59 typedef struct _DROPTARGET_CALLBACKS
61 HRESULT(*OnDragEnter
)(IN IDropTarget
*pDropTarget
,
63 IN
const FORMATETC
*Format
,
66 IN OUT DWORD
*pdwEffect
);
67 HRESULT(*OnDragOver
)(IN IDropTarget
*pDropTarget
,
71 IN OUT DWORD
*pdwEffect
);
72 HRESULT(*OnDragLeave
)(IN IDropTarget
*pDropTarget
,
74 HRESULT(*OnDrop
)(IN IDropTarget
*pDropTarget
,
76 IN
const FORMATETC
*Format
,
79 IN OUT DWORD
*pdwEffect
);
80 } DROPTARGET_CALLBACKS
, *PDROPTARGET_CALLBACKS
;
83 CreateDropTarget(IN HWND hwndTarget
,
84 IN DWORD nSupportedFormats
,
85 IN
const FORMATETC
*Formats OPTIONAL
,
86 IN PVOID Context OPTIONAL
,
87 IN
const DROPTARGET_CALLBACKS
*Callbacks OPTIONAL
);
94 SetWindowStyle(IN HWND hWnd
,
99 SetWindowExStyle(IN HWND hWnd
,
104 LoadPopupMenu(IN HINSTANCE hInstance
,
105 IN LPCTSTR lpMenuName
);
108 FindSubMenu(IN HMENU hMenu
,
110 IN BOOL fByPosition
);
113 GetCurrentLoggedOnUserName(OUT LPTSTR szBuffer
,
114 IN DWORD dwBufferSize
);
117 FormatMenuString(IN HMENU hMenu
,
123 GetExplorerRegValueSet(IN HKEY hKey
,
131 HRESULT WINAPI
_CStartMenu_Constructor(REFIID riid
, void **ppv
);
132 HANDLE WINAPI
_SHCreateDesktop(IShellDesktopTray
*ShellDesk
);
133 BOOL WINAPI
_SHDesktopMessageLoop(HANDLE hDesktop
);
134 DWORD WINAPI
_WinList_Init(void);
135 void WINAPI
_ShellDDEInit(BOOL bInit
);
141 #define TWM_OPENSTARTMENU (WM_USER + 260)
143 extern const GUID IID_IShellDesktopTray
;
145 #define INTERFACE ITrayWindow
146 DECLARE_INTERFACE_(ITrayWindow
, IUnknown
)
148 /*** IUnknown methods ***/
149 STDMETHOD_(HRESULT
, QueryInterface
) (THIS_ REFIID riid
, void** ppvObject
) PURE
;
150 STDMETHOD_(ULONG
, AddRef
) (THIS
) PURE
;
151 STDMETHOD_(ULONG
, Release
) (THIS
) PURE
;
152 /*** ITrayWindow methods ***/
153 STDMETHOD_(HRESULT
, Open
) (THIS
) PURE
;
154 STDMETHOD_(HRESULT
, Close
) (THIS
) PURE
;
155 STDMETHOD_(HWND
, GetHWND
) (THIS
) PURE
;
156 STDMETHOD_(BOOL
, IsSpecialHWND
) (THIS_ HWND hWnd
) PURE
;
157 STDMETHOD_(BOOL
, IsHorizontal
) (THIS
) PURE
;
158 STDMETHOD_(HFONT
, GetCaptionFonts
) (THIS_ HFONT
*phBoldCaption
) PURE
;
159 STDMETHOD_(HWND
, DisplayProperties
) (THIS
) PURE
;
160 STDMETHOD_(BOOL
, ExecContextMenuCmd
) (THIS_ UINT uiCmd
) PURE
;
161 STDMETHOD_(BOOL
, Lock
) (THIS_ BOOL bLock
) PURE
;
165 #if defined(COBJMACROS)
166 /*** IUnknown methods ***/
167 #define ITrayWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
168 #define ITrayWindow_AddRef(p) (p)->lpVtbl->AddRef(p)
169 #define ITrayWindow_Release(p) (p)->lpVtbl->Release(p)
170 /*** ITrayWindow methods ***/
171 #define ITrayWindow_Open(p) (p)->lpVtbl->Open(p)
172 #define ITrayWindow_Close(p) (p)->lpVtbl->Close(p)
173 #define ITrayWindow_GetHWND(p) (p)->lpVtbl->GetHWND(p)
174 #define ITrayWindow_IsSpecialHWND(p,a) (p)->lpVtbl->IsSpecialHWND(p,a)
175 #define ITrayWindow_IsHorizontal(p) (p)->lpVtbl->IsHorizontal(p)
176 #define ITrayWindow_GetCaptionFonts(p,a) (p)->lpVtbl->GetCaptionFonts(p,a)
177 #define ITrayWindow_DisplayProperties(p) (p)->lpVtbl->DisplayProperties(p)
178 #define ITrayWindow_ExecContextMenuCmd(p,a) (p)->lpVtbl->ExecContextMenuCmd(p,a)
179 #define ITrayWindow_Lock(p,a) (p)->lpVtbl->Lock(p,a)
183 RegisterTrayWindowClass(VOID
);
186 UnregisterTrayWindowClass(VOID
);
188 HRESULT
CreateTrayWindow(ITrayWindow
** ppTray
);
191 TrayProcessMessages(IN OUT ITrayWindow
*Tray
);
194 TrayMessageLoop(IN OUT ITrayWindow
*Tray
);
200 /* Structure to hold non-default options*/
201 typedef struct _ADVANCED_SETTINGS
204 } ADVANCED_SETTINGS
, *PADVANCED_SETTINGS
;
206 extern ADVANCED_SETTINGS AdvancedSettings
;
207 extern const TCHAR szAdvancedSettingsKey
[];
210 LoadAdvancedSettings(VOID
);
213 SaveSettingDword(IN PCTSTR pszKeyName
,
214 IN PCTSTR pszValueName
,
220 HRESULT
InitShellServices(HDPA
* phdpa
);
221 HRESULT
ShutdownShellServices(HDPA hdpa
);
228 ProcessStartupItems(VOID
);
235 DisplayTrayProperties(IN HWND hwndOwner
);
241 DesktopCreateWindow(IN OUT ITrayWindow
*Tray
);
244 DesktopDestroyShellWindow(IN HANDLE hDesktop
);
250 /* Internal Task Band CLSID */
251 extern const GUID CLSID_ITaskBand
;
253 #define INTERFACE ITaskBand
254 DECLARE_INTERFACE_(ITaskBand
, IUnknown
)
256 /*** IUnknown methods ***/
257 STDMETHOD_(HRESULT
, QueryInterface
) (THIS_ REFIID riid
, void** ppvObject
) PURE
;
258 STDMETHOD_(ULONG
, AddRef
) (THIS
) PURE
;
259 STDMETHOD_(ULONG
, Release
) (THIS
) PURE
;
260 /*** ITaskBand methods ***/
261 STDMETHOD_(HRESULT
, GetRebarBandID
)(THIS_ DWORD
*pdwBandID
) PURE
;
265 #if defined(COBJMACROS)
266 /*** IUnknown methods ***/
267 #define ITaskBand_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
268 #define ITaskBand_AddRef(p) (p)->lpVtbl->AddRef(p)
269 #define ITaskBand_Release(p) (p)->lpVtbl->Release(p)
270 /*** ITaskBand methods ***/
271 #define ITaskBand_GetRebarBandID(p,a) (p)->lpVtbl->GetRebarBandID(p,a)
275 CreateTaskBand(IN OUT ITrayWindow
*Tray
);
281 #define INTERFACE ITrayBandSite
282 DECLARE_INTERFACE_(ITrayBandSite
, IUnknown
)
284 /*** IUnknown methods ***/
285 STDMETHOD_(HRESULT
, QueryInterface
) (THIS_ REFIID riid
, void** ppvObject
) PURE
;
286 STDMETHOD_(ULONG
, AddRef
) (THIS
) PURE
;
287 STDMETHOD_(ULONG
, Release
) (THIS
) PURE
;
288 /*** IBandSiteStreamCallback ***/
289 STDMETHOD_(HRESULT
, OnLoad
)(THIS_ IStream
*pStm
, REFIID riid
, PVOID
*pvObj
) PURE
;
290 STDMETHOD_(HRESULT
, OnSave
)(THIS_ IUnknown
*pUnk
, IStream
*pStm
) PURE
;
291 /*** ITrayBandSite methods ***/
292 STDMETHOD_(HRESULT
, IsTaskBand
) (THIS_ IUnknown
*punk
) PURE
;
293 STDMETHOD_(HRESULT
, ProcessMessage
) (THIS_ HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*plResult
) PURE
;
294 STDMETHOD_(HRESULT
, AddContextMenus
) (THIS_ HMENU hmenu
, UINT indexMenu
, UINT idCmdFirst
, UINT idCmdLast
, UINT uFlags
, IContextMenu
**ppcm
) PURE
;
295 STDMETHOD_(HRESULT
, Lock
) (THIS_ BOOL bLock
) PURE
;
299 #if defined(COBJMACROS)
300 /*** IUnknown methods ***/
301 #define ITrayBandSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
302 #define ITrayBandSite_AddRef(p) (p)->lpVtbl->AddRef(p)
303 #define ITrayBandSite_Release(p) (p)->lpVtbl->Release(p)
304 /*** IBandSiteStreamCallback methods ***/
305 #define ITrayBandSite_OnLoad(p,a,b,c) (p)->lpVtbl->OnLoad(p,a,b,c)
306 #define ITrayBandSite_OnSave(p,a,b) (p)->lpVtbl->OnSave(p,a,b)
307 /*** ITrayBandSite methods ***/
308 #define ITrayBandSite_IsTaskBand(p,a) (p)->lpVtbl->IsTaskBand(p,a)
309 #define ITrayBandSite_ProcessMessage(p,a,b,c,d,e) (p)->lpVtbl->ProcessMessage(p,a,b,c,d,e)
310 #define ITrayBandSite_AddContextMenus(p,a,b,c,d,e,f) (p)->lpVtbl->AddContextMenus(p,a,b,c,d,e,f)
311 #define ITrayBandSite_Lock(p,a) (p)->lpVtbl->Lock(p,a)
315 CreateTrayBandSite(IN OUT ITrayWindow
*Tray
,
316 OUT HWND
*phWndRebar
,
317 OUT HWND
*phWndTaskSwitch
);
323 HRESULT
StartMenuBtnCtxMenuCreator(ITrayWindow
* TrayWnd
, IN HWND hWndOwner
, IContextMenu
** ppCtxMenu
);
325 #define INTERFACE IStartMenuSite
326 DECLARE_INTERFACE_(IStartMenuSite
, IUnknown
)
328 /*** IUnknown methods ***/
329 STDMETHOD_(HRESULT
, QueryInterface
) (THIS_ REFIID riid
, void** ppvObject
) PURE
;
330 STDMETHOD_(ULONG
, AddRef
) (THIS
) PURE
;
331 STDMETHOD_(ULONG
, Release
) (THIS
) PURE
;
332 /*** IStartMenuSite ***/
336 #if defined(COBJMACROS)
337 /*** IUnknown methods ***/
338 #define IStartMenuSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
339 #define IStartMenuSite_AddRef(p) (p)->lpVtbl->AddRef(p)
340 #define IStartMenuSite_Release(p) (p)->lpVtbl->Release(p)
341 /*** IStartMenuSite methods ***/
345 CreateStartMenu(IN ITrayWindow
*Tray
,
346 OUT IMenuBand
**ppMenuBand
,
347 IN HBITMAP hbmBanner OPTIONAL
,
348 IN BOOL bSmallIcons
);
351 UpdateStartMenu(IN OUT IMenuPopup
*pMenuPopup
,
352 IN HBITMAP hbmBanner OPTIONAL
,
353 IN BOOL bSmallIcons
);
360 CreateStartMenuSite(IN OUT ITrayWindow
*Tray
, const IID
& riid
, PVOID
* ppv
);
367 #define TCWM_GETMINIMUMSIZE (WM_USER + 0x100)
368 #define TCWM_UPDATETIME (WM_USER + 0x101)
371 #define TNWM_GETMINIMUMSIZE (WM_USER + 0x100)
372 #define TNWM_UPDATETIME (WM_USER + 0x101)
373 #define TNWM_SHOWCLOCK (WM_USER + 0x102)
374 #define TNWM_SHOWTRAY (WM_USER + 0x103)
375 #define TNWM_CHANGETRAYPOS (WM_USER + 0x104)
377 #define NTNWM_REALIGN (0x1)
380 RegisterTrayNotifyWndClass(VOID
);
383 UnregisterTrayNotifyWndClass(VOID
);
386 CreateTrayNotifyWnd(IN OUT ITrayWindow
*TrayWindow
,
390 TrayNotify_NotifyMsg(IN WPARAM wParam
,
394 TrayNotify_GetClockRect(OUT PRECT rcClock
);
400 #define TSWM_ENABLEGROUPING (WM_USER + 1)
401 #define TSWM_UPDATETASKBARPOS (WM_USER + 2)
404 RegisterTaskSwitchWndClass(VOID
);
407 UnregisterTaskSwitchWndClass(VOID
);
410 CreateTaskSwitchWnd(IN HWND hWndParent
,
411 IN OUT ITrayWindow
*Tray
);
414 Tray_OnStartMenuDismissed();
417 IsSameObject(IN IUnknown
*punk1
, IN IUnknown
*punk2
);
419 #endif /* _EXPLORER_PRECOMP__H_ */