1 #ifndef _EXPLORER_PRECOMP__H_
2 #define _EXPLORER_PRECOMP__H_
4 #define WIN7_COMPAT_MODE 0
5 #define WIN7_DEBUG_MODE 0
7 #if WIN7_DEBUG_MODE && !WIN7_COMPAT_MODE
8 #undef WIN7_COMPAT_MODE
9 #define WIN7_COMPAT_MODE 1
15 #define WIN32_NO_STATUS
17 #define COM_NO_WINDOWS_H
32 #include <atlsimpcoll.h>
40 #include <undocuser.h>
41 #include <shlwapi_undoc.h>
42 #include <shlobj_undoc.h>
43 #include <shlguid_undoc.h>
44 #include <undocshell.h>
48 #include <shellutils.h>
53 #include <wine/debug.h>
55 WINE_DEFAULT_DEBUG_CHANNEL(explorernew
);
57 #define ASSERT(cond) \
59 Win32DbgPrint(__FILE__, __LINE__, "ASSERTION %s FAILED!\n", #cond); \
62 extern HINSTANCE hExplorerInstance
;
63 extern HANDLE hProcessHeap
;
64 extern HKEY hkExplorer
;
65 extern BOOL bExplorerIsShell
;
67 #define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
68 #define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
76 SetWindowStyle(IN HWND hWnd
,
80 return SHSetWindowBits(hWnd
, GWL_STYLE
, dwStyleMask
, dwStyle
);
85 SetWindowExStyle(IN HWND hWnd
,
89 return SHSetWindowBits(hWnd
, GWL_EXSTYLE
, dwStyleMask
, dwStyle
);
93 LoadPopupMenu(IN HINSTANCE hInstance
,
94 IN LPCWSTR lpMenuName
);
97 FindSubMenu(IN HMENU hMenu
,
102 GetCurrentLoggedOnUserName(OUT LPWSTR szBuffer
,
103 IN DWORD dwBufferSize
);
106 FormatMenuString(IN HMENU hMenu
,
112 GetExplorerRegValueSet(IN HKEY hKey
,
120 VOID
InitRSHELL(VOID
);
121 HRESULT WINAPI
_CStartMenu_CreateInstance(REFIID riid
, void **ppv
);
122 HANDLE WINAPI
_SHCreateDesktop(IShellDesktopTray
*ShellDesk
);
123 BOOL WINAPI
_SHDesktopMessageLoop(HANDLE hDesktop
);
124 DWORD WINAPI
_WinList_Init(void);
125 void WINAPI
_ShellDDEInit(BOOL bInit
);
126 HRESULT WINAPI
_CBandSiteMenu_CreateInstance(REFIID riid
, void **ppv
);
127 HRESULT WINAPI
_CBandSite_CreateInstance(LPUNKNOWN pUnkOuter
, REFIID riid
, void **ppv
);
133 #define TWM_OPENSTARTMENU (WM_USER + 260)
134 #define TWM_SETTINGSCHANGED (WM_USER + 300)
136 extern const GUID IID_IShellDesktopTray
;
138 #define INTERFACE ITrayWindow
139 DECLARE_INTERFACE_(ITrayWindow
, IUnknown
)
141 /*** IUnknown methods ***/
142 STDMETHOD_(HRESULT
, QueryInterface
) (THIS_ REFIID riid
, void** ppvObject
) PURE
;
143 STDMETHOD_(ULONG
, AddRef
) (THIS
) PURE
;
144 STDMETHOD_(ULONG
, Release
) (THIS
) PURE
;
145 /*** ITrayWindow methods ***/
146 STDMETHOD_(HRESULT
, Open
) (THIS
) PURE
;
147 STDMETHOD_(HRESULT
, Close
) (THIS
) PURE
;
148 STDMETHOD_(HWND
, GetHWND
) (THIS
) PURE
;
149 STDMETHOD_(BOOL
, IsSpecialHWND
) (THIS_ HWND hWnd
) PURE
;
150 STDMETHOD_(BOOL
, IsHorizontal
) (THIS
) PURE
;
151 STDMETHOD_(HWND
, DisplayProperties
) (THIS
) PURE
;
152 STDMETHOD_(BOOL
, ExecContextMenuCmd
) (THIS_ UINT uiCmd
) PURE
;
153 STDMETHOD_(BOOL
, Lock
) (THIS_ BOOL bLock
) PURE
;
157 #if defined(COBJMACROS)
158 /*** IUnknown methods ***/
159 #define ITrayWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
160 #define ITrayWindow_AddRef(p) (p)->lpVtbl->AddRef(p)
161 #define ITrayWindow_Release(p) (p)->lpVtbl->Release(p)
162 /*** ITrayWindow methods ***/
163 #define ITrayWindow_Open(p) (p)->lpVtbl->Open(p)
164 #define ITrayWindow_Close(p) (p)->lpVtbl->Close(p)
165 #define ITrayWindow_GetHWND(p) (p)->lpVtbl->GetHWND(p)
166 #define ITrayWindow_IsSpecialHWND(p,a) (p)->lpVtbl->IsSpecialHWND(p,a)
167 #define ITrayWindow_IsHorizontal(p) (p)->lpVtbl->IsHorizontal(p)
168 #define ITrayWindow_DisplayProperties(p) (p)->lpVtbl->DisplayProperties(p)
169 #define ITrayWindow_ExecContextMenuCmd(p,a) (p)->lpVtbl->ExecContextMenuCmd(p,a)
170 #define ITrayWindow_Lock(p,a) (p)->lpVtbl->Lock(p,a)
174 RegisterTrayWindowClass(VOID
);
177 UnregisterTrayWindowClass(VOID
);
179 HRESULT
CreateTrayWindow(ITrayWindow
** ppTray
);
182 TrayProcessMessages(IN OUT ITrayWindow
*Tray
);
185 TrayMessageLoop(IN OUT ITrayWindow
*Tray
);
191 typedef struct _TW_STUCKRECTS2
201 DWORD AlwaysOnTop
: 1;
202 DWORD SmallIcons
: 1;
209 } TW_STRUCKRECTS2
, *PTW_STUCKRECTS2
;
211 struct TaskbarSettings
216 BOOL bHideInactiveIcons
;
223 extern TaskbarSettings g_TaskbarSettings
;
228 HRESULT
InitShellServices(HDPA
* phdpa
);
229 HRESULT
ShutdownShellServices(HDPA hdpa
);
235 BOOL
DoStartStartupItems(ITrayWindow
*Tray
);
236 INT
ProcessStartupItems(VOID
);
237 BOOL
DoFinishStartupItems(VOID
);
244 DisplayTrayProperties(IN HWND hwndOwner
, IN HWND hwndTaskbar
);
250 DesktopCreateWindow(IN OUT ITrayWindow
*Tray
);
253 DesktopDestroyShellWindow(IN HANDLE hDesktop
);
257 * notifyiconscust.cpp
260 ShowCustomizeNotifyIcons(HINSTANCE
, HWND
);
266 extern const GUID CLSID_ITaskBand
; /* Internal Task Band CLSID */
267 HRESULT
CTaskBand_CreateInstance(IN ITrayWindow
*Tray
, HWND hWndStartButton
, REFIID riid
, void **ppv
);
273 #define INTERFACE ITrayBandSite
274 DECLARE_INTERFACE_(ITrayBandSite
, IUnknown
)
276 /*** IUnknown methods ***/
277 STDMETHOD_(HRESULT
, QueryInterface
) (THIS_ REFIID riid
, void** ppvObject
) PURE
;
278 STDMETHOD_(ULONG
, AddRef
) (THIS
) PURE
;
279 STDMETHOD_(ULONG
, Release
) (THIS
) PURE
;
280 /*** IBandSiteStreamCallback ***/
281 STDMETHOD_(HRESULT
, OnLoad
)(THIS_ IStream
*pStm
, REFIID riid
, PVOID
*pvObj
) PURE
;
282 STDMETHOD_(HRESULT
, OnSave
)(THIS_ IUnknown
*pUnk
, IStream
*pStm
) PURE
;
283 /*** ITrayBandSite methods ***/
284 STDMETHOD_(HRESULT
, IsTaskBand
) (THIS_ IUnknown
*punk
) PURE
;
285 STDMETHOD_(HRESULT
, ProcessMessage
) (THIS_ HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*plResult
) PURE
;
286 STDMETHOD_(HRESULT
, AddContextMenus
) (THIS_ HMENU hmenu
, UINT indexMenu
, UINT idCmdFirst
, UINT idCmdLast
, UINT uFlags
, IContextMenu
**ppcm
) PURE
;
287 STDMETHOD_(HRESULT
, Lock
) (THIS_ BOOL bLock
) PURE
;
291 #if defined(COBJMACROS)
292 /*** IUnknown methods ***/
293 #define ITrayBandSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
294 #define ITrayBandSite_AddRef(p) (p)->lpVtbl->AddRef(p)
295 #define ITrayBandSite_Release(p) (p)->lpVtbl->Release(p)
296 /*** IBandSiteStreamCallback methods ***/
297 #define ITrayBandSite_OnLoad(p,a,b,c) (p)->lpVtbl->OnLoad(p,a,b,c)
298 #define ITrayBandSite_OnSave(p,a,b) (p)->lpVtbl->OnSave(p,a,b)
299 /*** ITrayBandSite methods ***/
300 #define ITrayBandSite_IsTaskBand(p,a) (p)->lpVtbl->IsTaskBand(p,a)
301 #define ITrayBandSite_ProcessMessage(p,a,b,c,d,e) (p)->lpVtbl->ProcessMessage(p,a,b,c,d,e)
302 #define ITrayBandSite_AddContextMenus(p,a,b,c,d,e,f) (p)->lpVtbl->AddContextMenus(p,a,b,c,d,e,f)
303 #define ITrayBandSite_Lock(p,a) (p)->lpVtbl->Lock(p,a)
306 HRESULT
CTrayBandSite_CreateInstance(IN ITrayWindow
*tray
, IN IDeskBand
* pTaskBand
, OUT ITrayBandSite
** pBandSite
);
312 HRESULT
StartMenuBtnCtxMenuCreator(ITrayWindow
* TrayWnd
, IN HWND hWndOwner
, IContextMenu
** ppCtxMenu
);
315 CreateStartMenu(IN ITrayWindow
*Tray
,
316 OUT IMenuBand
**ppMenuBand
,
317 IN HBITMAP hbmBanner OPTIONAL
,
318 IN BOOL bSmallIcons
);
324 ShowCustomizeClassic(HINSTANCE
, HWND
);
331 CreateStartMenuSite(IN OUT ITrayWindow
*Tray
, const IID
& riid
, PVOID
* ppv
);
338 HRESULT
CTrayClockWnd_CreateInstance(HWND hwndParent
, REFIID riid
, void **ppv
);
341 #define TNWM_GETMINIMUMSIZE (WM_USER + 0x100)
342 #define TNWM_CHANGETRAYPOS (WM_USER + 0x104)
344 #define NTNWM_REALIGN (0x1)
346 HRESULT
CTrayNotifyWnd_CreateInstance(HWND hwndParent
, REFIID riid
, void **ppv
);
349 HRESULT
CSysPagerWnd_CreateInstance(HWND hwndParent
, REFIID riid
, void **ppv
);
355 #define TSWM_UPDATETASKBARPOS (WM_USER + 2)
357 HRESULT
CTaskSwitchWnd_CreateInstance(IN HWND hWndParent
, IN OUT ITrayWindow
*Tray
, REFIID riid
, void **ppv
);
360 Tray_OnStartMenuDismissed(ITrayWindow
* Tray
);
363 IsSameObject(IN IUnknown
*punk1
, IN IUnknown
*punk2
);
365 #endif /* _EXPLORER_PRECOMP__H_ */