xref: /reactos/base/shell/explorer/precomp.h (revision 70d7009a)
1c2c66affSColin Finck #ifndef _EXPLORER_PRECOMP__H_
2c2c66affSColin Finck #define _EXPLORER_PRECOMP__H_
3c2c66affSColin Finck 
4c2c66affSColin Finck #define WIN7_COMPAT_MODE 0
5c2c66affSColin Finck #define WIN7_DEBUG_MODE 0
6c2c66affSColin Finck 
7c2c66affSColin Finck #if WIN7_DEBUG_MODE && !WIN7_COMPAT_MODE
8c2c66affSColin Finck #undef WIN7_COMPAT_MODE
9c2c66affSColin Finck #define WIN7_COMPAT_MODE 1
10c2c66affSColin Finck #endif
11c2c66affSColin Finck 
12c2c66affSColin Finck #include <stdio.h>
13c2c66affSColin Finck #include <tchar.h>
14c2c66affSColin Finck 
15c2c66affSColin Finck #define WIN32_NO_STATUS
16c2c66affSColin Finck #define _INC_WINDOWS
17c2c66affSColin Finck #define COM_NO_WINDOWS_H
18c2c66affSColin Finck 
19c2c66affSColin Finck #define COBJMACROS
206cdaad13SHermès Bélusca-Maïto #define OEMRESOURCE
21c2c66affSColin Finck 
22c2c66affSColin Finck #include <windef.h>
23c2c66affSColin Finck #include <winbase.h>
24c2c66affSColin Finck #include <winreg.h>
25c2c66affSColin Finck #include <wingdi.h>
26c2c66affSColin Finck #include <winnls.h>
27c2c66affSColin Finck #include <wincon.h>
28c2c66affSColin Finck #include <atlbase.h>
29c2c66affSColin Finck #include <atlcom.h>
30c2c66affSColin Finck #include <atlwin.h>
312ed535daSGiannis Adamopoulos #include <atlstr.h>
32d66c6890Sgedmurphy #include <atlcoll.h>
3375b09f3fSKatayama Hirofumi MZ #include <atlsimpcoll.h>
34c2c66affSColin Finck #include <shellapi.h>
35c2c66affSColin Finck #include <shlobj.h>
36c2c66affSColin Finck #include <shlwapi.h>
37c2c66affSColin Finck #include <uxtheme.h>
38d66c6890Sgedmurphy #include <process.h>
39c2c66affSColin Finck #include <strsafe.h>
40c2c66affSColin Finck 
41c2c66affSColin Finck #include <undocuser.h>
42c2c66affSColin Finck #include <shlwapi_undoc.h>
43c2c66affSColin Finck #include <shlobj_undoc.h>
44c2c66affSColin Finck #include <shlguid_undoc.h>
45c2c66affSColin Finck #include <undocshell.h>
46c2c66affSColin Finck 
47a6bf77e7SHermès Bélusca-Maïto #include <ui/rosctrls.h>
48a6bf77e7SHermès Bélusca-Maïto #include <ui/rosdlgs.h>
49c2c66affSColin Finck #include <shellutils.h>
50c2c66affSColin Finck 
51c2c66affSColin Finck #include "tmschema.h"
52c2c66affSColin Finck #include "resource.h"
53c2c66affSColin Finck 
54c2c66affSColin Finck #include <wine/debug.h>
55c2c66affSColin Finck 
56c2c66affSColin Finck WINE_DEFAULT_DEBUG_CHANNEL(explorernew);
57c2c66affSColin Finck 
58c2c66affSColin Finck #define ASSERT(cond) \
59c2c66affSColin Finck     do if (!(cond)) { \
60c2c66affSColin Finck         Win32DbgPrint(__FILE__, __LINE__, "ASSERTION %s FAILED!\n", #cond); \
61c2c66affSColin Finck         } while (0)
62c2c66affSColin Finck 
63c2c66affSColin Finck extern HINSTANCE hExplorerInstance;
64c2c66affSColin Finck extern HANDLE hProcessHeap;
65c2c66affSColin Finck extern HKEY hkExplorer;
6612de9654SHermès Bélusca-Maïto extern BOOL bExplorerIsShell;
67c2c66affSColin Finck 
68c2c66affSColin Finck /*
69c2c66affSColin Finck  * explorer.c
70c2c66affSColin Finck  */
71c2c66affSColin Finck 
72c2c66affSColin Finck static inline
73c2c66affSColin Finck LONG
SetWindowStyle(IN HWND hWnd,IN LONG dwStyleMask,IN LONG dwStyle)74c2c66affSColin Finck SetWindowStyle(IN HWND hWnd,
75c2c66affSColin Finck                IN LONG dwStyleMask,
76c2c66affSColin Finck                IN LONG dwStyle)
77c2c66affSColin Finck {
78c2c66affSColin Finck     return SHSetWindowBits(hWnd, GWL_STYLE, dwStyleMask, dwStyle);
79c2c66affSColin Finck }
80c2c66affSColin Finck 
81c2c66affSColin Finck static inline
82c2c66affSColin Finck LONG
SetWindowExStyle(IN HWND hWnd,IN LONG dwStyleMask,IN LONG dwStyle)83c2c66affSColin Finck SetWindowExStyle(IN HWND hWnd,
84c2c66affSColin Finck                  IN LONG dwStyleMask,
85c2c66affSColin Finck                  IN LONG dwStyle)
86c2c66affSColin Finck {
87c2c66affSColin Finck     return SHSetWindowBits(hWnd, GWL_EXSTYLE, dwStyleMask, dwStyle);
88c2c66affSColin Finck }
89c2c66affSColin Finck 
90c2c66affSColin Finck HMENU
91c2c66affSColin Finck LoadPopupMenu(IN HINSTANCE hInstance,
92c2c66affSColin Finck               IN LPCWSTR lpMenuName);
93c2c66affSColin Finck 
94c2c66affSColin Finck HMENU
95c2c66affSColin Finck FindSubMenu(IN HMENU hMenu,
96c2c66affSColin Finck             IN UINT uItem,
97c2c66affSColin Finck             IN BOOL fByPosition);
98c2c66affSColin Finck 
99c2c66affSColin Finck BOOL
100c2c66affSColin Finck GetCurrentLoggedOnUserName(OUT LPWSTR szBuffer,
101c2c66affSColin Finck                            IN DWORD dwBufferSize);
102c2c66affSColin Finck 
103c2c66affSColin Finck BOOL
104c2c66affSColin Finck FormatMenuString(IN HMENU hMenu,
105c2c66affSColin Finck                  IN UINT uPosition,
106c2c66affSColin Finck                  IN UINT uFlags,
107c2c66affSColin Finck                  ...);
108c2c66affSColin Finck 
109d1ac33a9SKatayama Hirofumi MZ BOOL GetRegValue(IN LPCWSTR pszSubKey, IN LPCWSTR pszValueName, IN BOOL bDefaultValue);
110d1ac33a9SKatayama Hirofumi MZ BOOL SetRegDword(IN LPCWSTR pszSubKey, IN LPCWSTR pszValueName, IN DWORD dwValue);
111d1ac33a9SKatayama Hirofumi MZ BOOL GetAdvancedBool(IN LPCWSTR pszValueName, IN BOOL bDefaultValue);
112d1ac33a9SKatayama Hirofumi MZ BOOL SetAdvancedDword(IN LPCWSTR pszValueName, IN DWORD dwValue);
113c2c66affSColin Finck 
114c2c66affSColin Finck /*
115c2c66affSColin Finck  *  rshell.c
116c2c66affSColin Finck  */
117c2c66affSColin Finck 
118c2c66affSColin Finck VOID InitRSHELL(VOID);
119c2c66affSColin Finck HRESULT WINAPI _CStartMenu_CreateInstance(REFIID riid, void **ppv);
120c2c66affSColin Finck HANDLE WINAPI _SHCreateDesktop(IShellDesktopTray *ShellDesk);
121c2c66affSColin Finck BOOL WINAPI _SHDesktopMessageLoop(HANDLE hDesktop);
122c2c66affSColin Finck DWORD WINAPI _WinList_Init(void);
123c2c66affSColin Finck void WINAPI _ShellDDEInit(BOOL bInit);
124c2c66affSColin Finck HRESULT WINAPI _CBandSiteMenu_CreateInstance(REFIID riid, void **ppv);
125c2c66affSColin Finck HRESULT WINAPI _CBandSite_CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, void **ppv);
126c2c66affSColin Finck 
127c2c66affSColin Finck /*
128c2c66affSColin Finck  * traywnd.c
129c2c66affSColin Finck  */
130c2c66affSColin Finck 
1316940d9fdSMark Jansen #define TWM_GETTASKSWITCH (WM_USER + 236)
132c2c66affSColin Finck #define TWM_OPENSTARTMENU (WM_USER + 260)
1332ed535daSGiannis Adamopoulos #define TWM_SETTINGSCHANGED (WM_USER + 300)
134e6bced7aSKatayama Hirofumi MZ #define TWM_PULSE (WM_USER + 400)
135c2c66affSColin Finck 
136c2c66affSColin Finck extern const GUID IID_IShellDesktopTray;
137c2c66affSColin Finck 
138c2c66affSColin Finck #define INTERFACE ITrayWindow
DECLARE_INTERFACE_(ITrayWindow,IUnknown)139c2c66affSColin Finck DECLARE_INTERFACE_(ITrayWindow, IUnknown)
140c2c66affSColin Finck {
141c2c66affSColin Finck     /*** IUnknown methods ***/
142c2c66affSColin Finck     STDMETHOD_(HRESULT, QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
143c2c66affSColin Finck     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
144c2c66affSColin Finck     STDMETHOD_(ULONG, Release) (THIS) PURE;
145c2c66affSColin Finck     /*** ITrayWindow methods ***/
146c2c66affSColin Finck     STDMETHOD_(HRESULT, Open) (THIS) PURE;
147c2c66affSColin Finck     STDMETHOD_(HRESULT, Close) (THIS) PURE;
148c2c66affSColin Finck     STDMETHOD_(HWND, GetHWND) (THIS) PURE;
149c2c66affSColin Finck     STDMETHOD_(BOOL, IsSpecialHWND) (THIS_ HWND hWnd) PURE;
150c2c66affSColin Finck     STDMETHOD_(BOOL, IsHorizontal) (THIS) PURE;
151c2c66affSColin Finck     STDMETHOD_(HWND, DisplayProperties) (THIS) PURE;
152c2c66affSColin Finck     STDMETHOD_(BOOL, ExecContextMenuCmd) (THIS_ UINT uiCmd) PURE;
153c2c66affSColin Finck     STDMETHOD_(BOOL, Lock) (THIS_ BOOL bLock) PURE;
154e6bced7aSKatayama Hirofumi MZ     STDMETHOD_(BOOL, IsTaskWnd) (THIS_ HWND hWnd) PURE;
155c2c66affSColin Finck };
156c2c66affSColin Finck #undef INTERFACE
157c2c66affSColin Finck 
158c2c66affSColin Finck #if defined(COBJMACROS)
159c2c66affSColin Finck /*** IUnknown methods ***/
160c2c66affSColin Finck #define ITrayWindow_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
161c2c66affSColin Finck #define ITrayWindow_AddRef(p)               (p)->lpVtbl->AddRef(p)
162c2c66affSColin Finck #define ITrayWindow_Release(p)              (p)->lpVtbl->Release(p)
163c2c66affSColin Finck /*** ITrayWindow methods ***/
164c2c66affSColin Finck #define ITrayWindow_Open(p)                 (p)->lpVtbl->Open(p)
165c2c66affSColin Finck #define ITrayWindow_Close(p)                (p)->lpVtbl->Close(p)
166c2c66affSColin Finck #define ITrayWindow_GetHWND(p)              (p)->lpVtbl->GetHWND(p)
167c2c66affSColin Finck #define ITrayWindow_IsSpecialHWND(p,a)      (p)->lpVtbl->IsSpecialHWND(p,a)
168c2c66affSColin Finck #define ITrayWindow_IsHorizontal(p)         (p)->lpVtbl->IsHorizontal(p)
169c2c66affSColin Finck #define ITrayWindow_DisplayProperties(p)    (p)->lpVtbl->DisplayProperties(p)
170c2c66affSColin Finck #define ITrayWindow_ExecContextMenuCmd(p,a) (p)->lpVtbl->ExecContextMenuCmd(p,a)
171c2c66affSColin Finck #define ITrayWindow_Lock(p,a)               (p)->lpVtbl->Lock(p,a)
172e6bced7aSKatayama Hirofumi MZ #define ITrayWindow_IsTaskWnd(p,a)          (p)->lpVtbl->IsTaskWnd(p,a)
173c2c66affSColin Finck #endif
174c2c66affSColin Finck 
175c2c66affSColin Finck HRESULT CreateTrayWindow(ITrayWindow ** ppTray);
176c2c66affSColin Finck 
177c2c66affSColin Finck VOID
178c2c66affSColin Finck TrayProcessMessages(IN OUT ITrayWindow *Tray);
179c2c66affSColin Finck 
180c2c66affSColin Finck VOID
181c2c66affSColin Finck TrayMessageLoop(IN OUT ITrayWindow *Tray);
182c2c66affSColin Finck 
183c2c66affSColin Finck /*
184c2c66affSColin Finck  * settings.c
185c2c66affSColin Finck  */
186c2c66affSColin Finck 
18777653462SCarl J. Bialorucki enum TrayIconsMode
18877653462SCarl J. Bialorucki {
18977653462SCarl J. Bialorucki     TIM_Default,
19077653462SCarl J. Bialorucki     TIM_NeverCompact,
19177653462SCarl J. Bialorucki     TIM_AlwaysCompact,
19277653462SCarl J. Bialorucki     TIM_Max = TIM_AlwaysCompact
19377653462SCarl J. Bialorucki };
19477653462SCarl J. Bialorucki 
1952ed535daSGiannis Adamopoulos typedef struct _TW_STUCKRECTS2
1962ed535daSGiannis Adamopoulos {
1972ed535daSGiannis Adamopoulos     DWORD cbSize;
1982ed535daSGiannis Adamopoulos     LONG Unknown;
1992ed535daSGiannis Adamopoulos     union
2002ed535daSGiannis Adamopoulos     {
2012ed535daSGiannis Adamopoulos         DWORD dwFlags;
2022ed535daSGiannis Adamopoulos         struct
2032ed535daSGiannis Adamopoulos         {
2042ed535daSGiannis Adamopoulos             DWORD AutoHide : 1;
2052ed535daSGiannis Adamopoulos             DWORD AlwaysOnTop : 1;
20617b0623cSKatayama Hirofumi MZ             DWORD SmSmallIcons : 1; // Start menu Small Icons
2072ed535daSGiannis Adamopoulos             DWORD HideClock : 1;
2082ed535daSGiannis Adamopoulos         };
2092ed535daSGiannis Adamopoulos     };
2102ed535daSGiannis Adamopoulos     DWORD Position;
2112ed535daSGiannis Adamopoulos     SIZE Size;
2122ed535daSGiannis Adamopoulos     RECT Rect;
2132ed535daSGiannis Adamopoulos } TW_STRUCKRECTS2, *PTW_STUCKRECTS2;
2142ed535daSGiannis Adamopoulos 
2152ed535daSGiannis Adamopoulos struct TaskbarSettings
216c2c66affSColin Finck {
217c2c66affSColin Finck     BOOL bLock;
218c2c66affSColin Finck     BOOL bGroupButtons;
219c2c66affSColin Finck     BOOL bShowSeconds;
22019c8574eSCarl J. Bialorucki     BOOL bPreferDate;
221c2c66affSColin Finck     BOOL bHideInactiveIcons;
2220e8cf6ffSCarl J. Bialorucki     BOOL bSmallIcons;
22377653462SCarl J. Bialorucki     TrayIconsMode eCompactTrayIcons;
22428ae9fb7SCarl J. Bialorucki     BOOL bShowDesktopButton;
2252ed535daSGiannis Adamopoulos     TW_STRUCKRECTS2 sr;
226c2c66affSColin Finck 
2272ed535daSGiannis Adamopoulos     BOOL Load();
2282ed535daSGiannis Adamopoulos     BOOL Save();
UseCompactTrayIconsTaskbarSettings22977653462SCarl J. Bialorucki     inline BOOL UseCompactTrayIcons()
23077653462SCarl J. Bialorucki     {
23177653462SCarl J. Bialorucki         switch (eCompactTrayIcons)
23277653462SCarl J. Bialorucki         {
23377653462SCarl J. Bialorucki             case TIM_NeverCompact:
23477653462SCarl J. Bialorucki                 return FALSE;
23577653462SCarl J. Bialorucki             case TIM_AlwaysCompact:
23677653462SCarl J. Bialorucki                 return TRUE;
23777653462SCarl J. Bialorucki             default:
23877653462SCarl J. Bialorucki                 return bSmallIcons;
23977653462SCarl J. Bialorucki         }
24077653462SCarl J. Bialorucki     }
2412ed535daSGiannis Adamopoulos };
242c2c66affSColin Finck 
2432ed535daSGiannis Adamopoulos extern TaskbarSettings g_TaskbarSettings;
244c2c66affSColin Finck 
245c2c66affSColin Finck /*
246c2c66affSColin Finck  * shellservice.cpp
247c2c66affSColin Finck  */
248c2c66affSColin Finck HRESULT InitShellServices(HDPA * phdpa);
249c2c66affSColin Finck HRESULT ShutdownShellServices(HDPA hdpa);
250c2c66affSColin Finck 
251c2c66affSColin Finck /*
252c2c66affSColin Finck  * startup.cpp
253c2c66affSColin Finck  */
254c2c66affSColin Finck 
255738c8fc2SWhindmar Saksit VOID ReleaseStartupMutex();
256738c8fc2SWhindmar Saksit VOID ProcessRunOnceItems();
2570a8cd95cSKatayama Hirofumi MZ BOOL DoStartStartupItems(ITrayWindow *Tray);
258738c8fc2SWhindmar Saksit INT ProcessStartupItems(BOOL bRunOnce);
ProcessStartupItems()259738c8fc2SWhindmar Saksit static inline INT ProcessStartupItems() { return ProcessStartupItems(FALSE); }
DoFinishStartupItems()260738c8fc2SWhindmar Saksit static inline VOID DoFinishStartupItems() { ReleaseStartupMutex(); }
261c2c66affSColin Finck 
262c2c66affSColin Finck /*
263c2c66affSColin Finck  * trayprop.h
264c2c66affSColin Finck  */
265c2c66affSColin Finck 
266c2c66affSColin Finck VOID
2672ed535daSGiannis Adamopoulos DisplayTrayProperties(IN HWND hwndOwner, IN HWND hwndTaskbar);
268c2c66affSColin Finck 
269c2c66affSColin Finck /*
270c2c66affSColin Finck  * desktop.cpp
271c2c66affSColin Finck  */
272c2c66affSColin Finck HANDLE
273c2c66affSColin Finck DesktopCreateWindow(IN OUT ITrayWindow *Tray);
274c2c66affSColin Finck 
275c2c66affSColin Finck VOID
276c2c66affSColin Finck DesktopDestroyShellWindow(IN HANDLE hDesktop);
277c2c66affSColin Finck 
278c2c66affSColin Finck 
279c2c66affSColin Finck /*
280c2c66affSColin Finck  * notifyiconscust.cpp
281c2c66affSColin Finck  */
282c2c66affSColin Finck VOID
283c2c66affSColin Finck ShowCustomizeNotifyIcons(HINSTANCE, HWND);
284c2c66affSColin Finck 
285c2c66affSColin Finck /*
286c2c66affSColin Finck  * taskband.cpp
287c2c66affSColin Finck  */
288c2c66affSColin Finck 
289c2c66affSColin Finck extern const GUID CLSID_ITaskBand;  /* Internal Task Band CLSID */
290c2c66affSColin Finck HRESULT CTaskBand_CreateInstance(IN ITrayWindow *Tray, HWND hWndStartButton, REFIID riid, void **ppv);
291c2c66affSColin Finck 
292c2c66affSColin Finck /*
293c2c66affSColin Finck  * tbsite.cpp
294c2c66affSColin Finck  */
295c2c66affSColin Finck 
296c2c66affSColin Finck #define INTERFACE ITrayBandSite
DECLARE_INTERFACE_(ITrayBandSite,IUnknown)297c2c66affSColin Finck DECLARE_INTERFACE_(ITrayBandSite, IUnknown)
298c2c66affSColin Finck {
299c2c66affSColin Finck     /*** IUnknown methods ***/
300c2c66affSColin Finck     STDMETHOD_(HRESULT, QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
301c2c66affSColin Finck     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
302c2c66affSColin Finck     STDMETHOD_(ULONG, Release) (THIS) PURE;
303c2c66affSColin Finck     /*** IBandSiteStreamCallback ***/
304c2c66affSColin Finck     STDMETHOD_(HRESULT, OnLoad)(THIS_ IStream *pStm, REFIID riid, PVOID *pvObj) PURE;
305c2c66affSColin Finck     STDMETHOD_(HRESULT, OnSave)(THIS_ IUnknown *pUnk, IStream *pStm) PURE;
306c2c66affSColin Finck     /*** ITrayBandSite methods ***/
307c2c66affSColin Finck     STDMETHOD_(HRESULT, IsTaskBand) (THIS_ IUnknown *punk) PURE;
308c2c66affSColin Finck     STDMETHOD_(HRESULT, ProcessMessage) (THIS_ HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *plResult) PURE;
309c2c66affSColin Finck     STDMETHOD_(HRESULT, AddContextMenus) (THIS_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags, IContextMenu **ppcm) PURE;
310c2c66affSColin Finck     STDMETHOD_(HRESULT, Lock) (THIS_ BOOL bLock) PURE;
311c2c66affSColin Finck };
312c2c66affSColin Finck #undef INTERFACE
313c2c66affSColin Finck 
314c2c66affSColin Finck #if defined(COBJMACROS)
315c2c66affSColin Finck /*** IUnknown methods ***/
316c2c66affSColin Finck #define ITrayBandSite_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
317c2c66affSColin Finck #define ITrayBandSite_AddRef(p)                         (p)->lpVtbl->AddRef(p)
318c2c66affSColin Finck #define ITrayBandSite_Release(p)                        (p)->lpVtbl->Release(p)
319c2c66affSColin Finck /*** IBandSiteStreamCallback methods ***/
320c2c66affSColin Finck #define ITrayBandSite_OnLoad(p,a,b,c)                   (p)->lpVtbl->OnLoad(p,a,b,c)
321c2c66affSColin Finck #define ITrayBandSite_OnSave(p,a,b)                     (p)->lpVtbl->OnSave(p,a,b)
322c2c66affSColin Finck /*** ITrayBandSite methods ***/
323c2c66affSColin Finck #define ITrayBandSite_IsTaskBand(p,a)                   (p)->lpVtbl->IsTaskBand(p,a)
324c2c66affSColin Finck #define ITrayBandSite_ProcessMessage(p,a,b,c,d,e)       (p)->lpVtbl->ProcessMessage(p,a,b,c,d,e)
325c2c66affSColin Finck #define ITrayBandSite_AddContextMenus(p,a,b,c,d,e,f)    (p)->lpVtbl->AddContextMenus(p,a,b,c,d,e,f)
326c2c66affSColin Finck #define ITrayBandSite_Lock(p,a)                         (p)->lpVtbl->Lock(p,a)
327c2c66affSColin Finck #endif
328c2c66affSColin Finck 
329c2c66affSColin Finck HRESULT CTrayBandSite_CreateInstance(IN ITrayWindow *tray, IN IDeskBand* pTaskBand, OUT ITrayBandSite** pBandSite);
330c2c66affSColin Finck 
331c2c66affSColin Finck /*
33217b0623cSKatayama Hirofumi MZ  * startctxmnu.cpp
333c2c66affSColin Finck  */
33484fa20ecSGiannis Adamopoulos HRESULT CStartMenuBtnCtxMenu_CreateInstance(ITrayWindow * TrayWnd, IN HWND hWndOwner, IContextMenu ** ppCtxMenu);
335c2c66affSColin Finck 
33617b0623cSKatayama Hirofumi MZ /*
33717b0623cSKatayama Hirofumi MZ  * startmnu.cpp
33817b0623cSKatayama Hirofumi MZ  */
339c2c66affSColin Finck IMenuPopup*
340c2c66affSColin Finck CreateStartMenu(IN ITrayWindow *Tray,
341c2c66affSColin Finck                 OUT IMenuBand **ppMenuBand,
342c2c66affSColin Finck                 IN HBITMAP hbmBanner OPTIONAL,
343c2c66affSColin Finck                 IN BOOL bSmallIcons);
34417b0623cSKatayama Hirofumi MZ HRESULT
34517b0623cSKatayama Hirofumi MZ UpdateStartMenu(IN OUT IMenuPopup *pMenuPopup,
34617b0623cSKatayama Hirofumi MZ                 IN HBITMAP hbmBanner  OPTIONAL,
34717b0623cSKatayama Hirofumi MZ                 IN BOOL bSmallIcons,
34817b0623cSKatayama Hirofumi MZ                 IN BOOL bRefresh);
349c2c66affSColin Finck 
350c2c66affSColin Finck /*
351c2c66affSColin Finck  * startmnucust.cpp
352c2c66affSColin Finck  */
353c2c66affSColin Finck VOID
354c2c66affSColin Finck ShowCustomizeClassic(HINSTANCE, HWND);
355c2c66affSColin Finck 
356c2c66affSColin Finck /*
357c2c66affSColin Finck * startmnusite.cpp
358c2c66affSColin Finck */
359c2c66affSColin Finck HRESULT
36084fa20ecSGiannis Adamopoulos CStartMenuSite_CreateInstance(IN OUT ITrayWindow *Tray, const IID & riid, PVOID * ppv);
361c2c66affSColin Finck 
362c2c66affSColin Finck /*
363c2c66affSColin Finck  * trayntfy.c
364c2c66affSColin Finck  */
365c2c66affSColin Finck 
366c2c66affSColin Finck /* TrayClockWnd */
367455bce68SGiannis Adamopoulos HRESULT CTrayClockWnd_CreateInstance(HWND hwndParent, REFIID riid, void **ppv);
368c2c66affSColin Finck 
369c2c66affSColin Finck /* TrayNotifyWnd */
370c2c66affSColin Finck #define TNWM_GETMINIMUMSIZE (WM_USER + 0x100)
371c2c66affSColin Finck #define TNWM_CHANGETRAYPOS  (WM_USER + 0x104)
372*70d7009aSEthan Rodensky #define TNWM_GETSHOWDESKTOPBUTTON (WM_USER + 0x7601)
373c2c66affSColin Finck 
374c2c66affSColin Finck #define NTNWM_REALIGN   (0x1)
375c2c66affSColin Finck 
376455bce68SGiannis Adamopoulos HRESULT CTrayNotifyWnd_CreateInstance(HWND hwndParent, REFIID riid, void **ppv);
377c2c66affSColin Finck 
378455bce68SGiannis Adamopoulos /* SysPagerWnd */
379455bce68SGiannis Adamopoulos HRESULT CSysPagerWnd_CreateInstance(HWND hwndParent, REFIID riid, void **ppv);
380c2c66affSColin Finck 
381*70d7009aSEthan Rodensky #include "traydeskbtn.h"
382*70d7009aSEthan Rodensky 
383c2c66affSColin Finck /*
384c2c66affSColin Finck  * taskswnd.c
385c2c66affSColin Finck  */
386c2c66affSColin Finck 
387c2c66affSColin Finck #define TSWM_UPDATETASKBARPOS   (WM_USER + 2)
388c2c66affSColin Finck 
389455bce68SGiannis Adamopoulos HRESULT CTaskSwitchWnd_CreateInstance(IN HWND hWndParent, IN OUT ITrayWindow *Tray, REFIID riid, void **ppv);
390c2c66affSColin Finck 
391c2c66affSColin Finck HRESULT
392c2c66affSColin Finck Tray_OnStartMenuDismissed(ITrayWindow* Tray);
393c2c66affSColin Finck 
394c2c66affSColin Finck HRESULT
395c2c66affSColin Finck IsSameObject(IN IUnknown *punk1, IN IUnknown *punk2);
396c2c66affSColin Finck 
397c2c66affSColin Finck #endif /* _EXPLORER_PRECOMP__H_ */
398