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 20c2c66affSColin Finck 21c2c66affSColin Finck #include <windef.h> 22c2c66affSColin Finck #include <winbase.h> 23c2c66affSColin Finck #include <winreg.h> 24c2c66affSColin Finck #include <wingdi.h> 25c2c66affSColin Finck #include <winnls.h> 26c2c66affSColin Finck #include <wincon.h> 27c2c66affSColin Finck #include <atlbase.h> 28c2c66affSColin Finck #include <atlcom.h> 29c2c66affSColin Finck #include <atlwin.h> 30*2ed535daSGiannis Adamopoulos #include <atlstr.h> 31c2c66affSColin Finck #include <shellapi.h> 32c2c66affSColin Finck #include <shlobj.h> 33c2c66affSColin Finck #include <shlwapi.h> 34c2c66affSColin Finck #include <uxtheme.h> 35c2c66affSColin Finck #include <strsafe.h> 36c2c66affSColin Finck 37c2c66affSColin Finck #include <undocuser.h> 38c2c66affSColin Finck #include <shlwapi_undoc.h> 39c2c66affSColin Finck #include <shlobj_undoc.h> 40c2c66affSColin Finck #include <shlguid_undoc.h> 41c2c66affSColin Finck #include <undocshell.h> 42c2c66affSColin Finck 43c2c66affSColin Finck #include <rosctrls.h> 44*2ed535daSGiannis Adamopoulos #include <rosdlgs.h> 45c2c66affSColin Finck #include <shellutils.h> 46c2c66affSColin Finck 47c2c66affSColin Finck #include "tmschema.h" 48c2c66affSColin Finck #include "resource.h" 49c2c66affSColin Finck 50c2c66affSColin Finck #include <wine/debug.h> 51c2c66affSColin Finck 52c2c66affSColin Finck WINE_DEFAULT_DEBUG_CHANNEL(explorernew); 53c2c66affSColin Finck 54c2c66affSColin Finck #define ASSERT(cond) \ 55c2c66affSColin Finck do if (!(cond)) { \ 56c2c66affSColin Finck Win32DbgPrint(__FILE__, __LINE__, "ASSERTION %s FAILED!\n", #cond); \ 57c2c66affSColin Finck } while (0) 58c2c66affSColin Finck 59c2c66affSColin Finck extern HINSTANCE hExplorerInstance; 60c2c66affSColin Finck extern HANDLE hProcessHeap; 61c2c66affSColin Finck extern HKEY hkExplorer; 62c2c66affSColin Finck 63c2c66affSColin Finck #define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp)) 64c2c66affSColin Finck #define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp)) 65c2c66affSColin Finck 66c2c66affSColin Finck /* 67c2c66affSColin Finck * explorer.c 68c2c66affSColin Finck */ 69c2c66affSColin Finck 70c2c66affSColin Finck static inline 71c2c66affSColin Finck LONG 72c2c66affSColin Finck SetWindowStyle(IN HWND hWnd, 73c2c66affSColin Finck IN LONG dwStyleMask, 74c2c66affSColin Finck IN LONG dwStyle) 75c2c66affSColin Finck { 76c2c66affSColin Finck return SHSetWindowBits(hWnd, GWL_STYLE, dwStyleMask, dwStyle); 77c2c66affSColin Finck } 78c2c66affSColin Finck 79c2c66affSColin Finck static inline 80c2c66affSColin Finck LONG 81c2c66affSColin Finck SetWindowExStyle(IN HWND hWnd, 82c2c66affSColin Finck IN LONG dwStyleMask, 83c2c66affSColin Finck IN LONG dwStyle) 84c2c66affSColin Finck { 85c2c66affSColin Finck return SHSetWindowBits(hWnd, GWL_EXSTYLE, dwStyleMask, dwStyle); 86c2c66affSColin Finck } 87c2c66affSColin Finck 88c2c66affSColin Finck HMENU 89c2c66affSColin Finck LoadPopupMenu(IN HINSTANCE hInstance, 90c2c66affSColin Finck IN LPCWSTR lpMenuName); 91c2c66affSColin Finck 92c2c66affSColin Finck HMENU 93c2c66affSColin Finck FindSubMenu(IN HMENU hMenu, 94c2c66affSColin Finck IN UINT uItem, 95c2c66affSColin Finck IN BOOL fByPosition); 96c2c66affSColin Finck 97c2c66affSColin Finck BOOL 98c2c66affSColin Finck GetCurrentLoggedOnUserName(OUT LPWSTR szBuffer, 99c2c66affSColin Finck IN DWORD dwBufferSize); 100c2c66affSColin Finck 101c2c66affSColin Finck BOOL 102c2c66affSColin Finck FormatMenuString(IN HMENU hMenu, 103c2c66affSColin Finck IN UINT uPosition, 104c2c66affSColin Finck IN UINT uFlags, 105c2c66affSColin Finck ...); 106c2c66affSColin Finck 107c2c66affSColin Finck BOOL 108c2c66affSColin Finck GetExplorerRegValueSet(IN HKEY hKey, 109c2c66affSColin Finck IN LPCWSTR lpSubKey, 110c2c66affSColin Finck IN LPCWSTR lpValue); 111c2c66affSColin Finck 112c2c66affSColin Finck /* 113c2c66affSColin Finck * rshell.c 114c2c66affSColin Finck */ 115c2c66affSColin Finck 116c2c66affSColin Finck VOID InitRSHELL(VOID); 117c2c66affSColin Finck HRESULT WINAPI _CStartMenu_CreateInstance(REFIID riid, void **ppv); 118c2c66affSColin Finck HANDLE WINAPI _SHCreateDesktop(IShellDesktopTray *ShellDesk); 119c2c66affSColin Finck BOOL WINAPI _SHDesktopMessageLoop(HANDLE hDesktop); 120c2c66affSColin Finck DWORD WINAPI _WinList_Init(void); 121c2c66affSColin Finck void WINAPI _ShellDDEInit(BOOL bInit); 122c2c66affSColin Finck HRESULT WINAPI _CBandSiteMenu_CreateInstance(REFIID riid, void **ppv); 123c2c66affSColin Finck HRESULT WINAPI _CBandSite_CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, void **ppv); 124c2c66affSColin Finck 125c2c66affSColin Finck /* 126c2c66affSColin Finck * traywnd.c 127c2c66affSColin Finck */ 128c2c66affSColin Finck 129c2c66affSColin Finck #define TWM_OPENSTARTMENU (WM_USER + 260) 130*2ed535daSGiannis Adamopoulos #define TWM_SETTINGSCHANGED (WM_USER + 300) 131c2c66affSColin Finck 132c2c66affSColin Finck extern const GUID IID_IShellDesktopTray; 133c2c66affSColin Finck 134c2c66affSColin Finck #define INTERFACE ITrayWindow 135c2c66affSColin Finck DECLARE_INTERFACE_(ITrayWindow, IUnknown) 136c2c66affSColin Finck { 137c2c66affSColin Finck /*** IUnknown methods ***/ 138c2c66affSColin Finck STDMETHOD_(HRESULT, QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; 139c2c66affSColin Finck STDMETHOD_(ULONG, AddRef) (THIS) PURE; 140c2c66affSColin Finck STDMETHOD_(ULONG, Release) (THIS) PURE; 141c2c66affSColin Finck /*** ITrayWindow methods ***/ 142c2c66affSColin Finck STDMETHOD_(HRESULT, Open) (THIS) PURE; 143c2c66affSColin Finck STDMETHOD_(HRESULT, Close) (THIS) PURE; 144c2c66affSColin Finck STDMETHOD_(HWND, GetHWND) (THIS) PURE; 145c2c66affSColin Finck STDMETHOD_(BOOL, IsSpecialHWND) (THIS_ HWND hWnd) PURE; 146c2c66affSColin Finck STDMETHOD_(BOOL, IsHorizontal) (THIS) PURE; 147c2c66affSColin Finck STDMETHOD_(HWND, DisplayProperties) (THIS) PURE; 148c2c66affSColin Finck STDMETHOD_(BOOL, ExecContextMenuCmd) (THIS_ UINT uiCmd) PURE; 149c2c66affSColin Finck STDMETHOD_(BOOL, Lock) (THIS_ BOOL bLock) PURE; 150c2c66affSColin Finck }; 151c2c66affSColin Finck #undef INTERFACE 152c2c66affSColin Finck 153c2c66affSColin Finck #if defined(COBJMACROS) 154c2c66affSColin Finck /*** IUnknown methods ***/ 155c2c66affSColin Finck #define ITrayWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 156c2c66affSColin Finck #define ITrayWindow_AddRef(p) (p)->lpVtbl->AddRef(p) 157c2c66affSColin Finck #define ITrayWindow_Release(p) (p)->lpVtbl->Release(p) 158c2c66affSColin Finck /*** ITrayWindow methods ***/ 159c2c66affSColin Finck #define ITrayWindow_Open(p) (p)->lpVtbl->Open(p) 160c2c66affSColin Finck #define ITrayWindow_Close(p) (p)->lpVtbl->Close(p) 161c2c66affSColin Finck #define ITrayWindow_GetHWND(p) (p)->lpVtbl->GetHWND(p) 162c2c66affSColin Finck #define ITrayWindow_IsSpecialHWND(p,a) (p)->lpVtbl->IsSpecialHWND(p,a) 163c2c66affSColin Finck #define ITrayWindow_IsHorizontal(p) (p)->lpVtbl->IsHorizontal(p) 164c2c66affSColin Finck #define ITrayWindow_DisplayProperties(p) (p)->lpVtbl->DisplayProperties(p) 165c2c66affSColin Finck #define ITrayWindow_ExecContextMenuCmd(p,a) (p)->lpVtbl->ExecContextMenuCmd(p,a) 166c2c66affSColin Finck #define ITrayWindow_Lock(p,a) (p)->lpVtbl->Lock(p,a) 167c2c66affSColin Finck #endif 168c2c66affSColin Finck 169c2c66affSColin Finck BOOL 170c2c66affSColin Finck RegisterTrayWindowClass(VOID); 171c2c66affSColin Finck 172c2c66affSColin Finck VOID 173c2c66affSColin Finck UnregisterTrayWindowClass(VOID); 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 187*2ed535daSGiannis Adamopoulos typedef struct _TW_STUCKRECTS2 188*2ed535daSGiannis Adamopoulos { 189*2ed535daSGiannis Adamopoulos DWORD cbSize; 190*2ed535daSGiannis Adamopoulos LONG Unknown; 191*2ed535daSGiannis Adamopoulos union 192*2ed535daSGiannis Adamopoulos { 193*2ed535daSGiannis Adamopoulos DWORD dwFlags; 194*2ed535daSGiannis Adamopoulos struct 195*2ed535daSGiannis Adamopoulos { 196*2ed535daSGiannis Adamopoulos DWORD AutoHide : 1; 197*2ed535daSGiannis Adamopoulos DWORD AlwaysOnTop : 1; 198*2ed535daSGiannis Adamopoulos DWORD SmallIcons : 1; 199*2ed535daSGiannis Adamopoulos DWORD HideClock : 1; 200*2ed535daSGiannis Adamopoulos }; 201*2ed535daSGiannis Adamopoulos }; 202*2ed535daSGiannis Adamopoulos DWORD Position; 203*2ed535daSGiannis Adamopoulos SIZE Size; 204*2ed535daSGiannis Adamopoulos RECT Rect; 205*2ed535daSGiannis Adamopoulos } TW_STRUCKRECTS2, *PTW_STUCKRECTS2; 206*2ed535daSGiannis Adamopoulos 207*2ed535daSGiannis Adamopoulos struct TaskbarSettings 208c2c66affSColin Finck { 209c2c66affSColin Finck BOOL bLock; 210c2c66affSColin Finck BOOL bGroupButtons; 211c2c66affSColin Finck BOOL bShowSeconds; 212c2c66affSColin Finck BOOL bHideInactiveIcons; 213*2ed535daSGiannis Adamopoulos TW_STRUCKRECTS2 sr; 214c2c66affSColin Finck 215*2ed535daSGiannis Adamopoulos BOOL Load(); 216*2ed535daSGiannis Adamopoulos BOOL Save(); 217*2ed535daSGiannis Adamopoulos }; 218c2c66affSColin Finck 219*2ed535daSGiannis Adamopoulos extern TaskbarSettings g_TaskbarSettings; 220c2c66affSColin Finck 221c2c66affSColin Finck /* 222c2c66affSColin Finck * shellservice.cpp 223c2c66affSColin Finck */ 224c2c66affSColin Finck HRESULT InitShellServices(HDPA * phdpa); 225c2c66affSColin Finck HRESULT ShutdownShellServices(HDPA hdpa); 226c2c66affSColin Finck 227c2c66affSColin Finck /* 228c2c66affSColin Finck * startup.cpp 229c2c66affSColin Finck */ 230c2c66affSColin Finck 231c2c66affSColin Finck int 232c2c66affSColin Finck ProcessStartupItems(VOID); 233c2c66affSColin Finck 234c2c66affSColin Finck /* 235c2c66affSColin Finck * trayprop.h 236c2c66affSColin Finck */ 237c2c66affSColin Finck 238c2c66affSColin Finck VOID 239*2ed535daSGiannis Adamopoulos DisplayTrayProperties(IN HWND hwndOwner, IN HWND hwndTaskbar); 240c2c66affSColin Finck 241c2c66affSColin Finck /* 242c2c66affSColin Finck * desktop.cpp 243c2c66affSColin Finck */ 244c2c66affSColin Finck HANDLE 245c2c66affSColin Finck DesktopCreateWindow(IN OUT ITrayWindow *Tray); 246c2c66affSColin Finck 247c2c66affSColin Finck VOID 248c2c66affSColin Finck DesktopDestroyShellWindow(IN HANDLE hDesktop); 249c2c66affSColin Finck 250c2c66affSColin Finck 251c2c66affSColin Finck /* 252c2c66affSColin Finck * notifyiconscust.cpp 253c2c66affSColin Finck */ 254c2c66affSColin Finck VOID 255c2c66affSColin Finck ShowCustomizeNotifyIcons(HINSTANCE, HWND); 256c2c66affSColin Finck 257c2c66affSColin Finck /* 258c2c66affSColin Finck * taskband.cpp 259c2c66affSColin Finck */ 260c2c66affSColin Finck 261c2c66affSColin Finck extern const GUID CLSID_ITaskBand; /* Internal Task Band CLSID */ 262c2c66affSColin Finck HRESULT CTaskBand_CreateInstance(IN ITrayWindow *Tray, HWND hWndStartButton, REFIID riid, void **ppv); 263c2c66affSColin Finck 264c2c66affSColin Finck /* 265c2c66affSColin Finck * tbsite.cpp 266c2c66affSColin Finck */ 267c2c66affSColin Finck 268c2c66affSColin Finck #define INTERFACE ITrayBandSite 269c2c66affSColin Finck DECLARE_INTERFACE_(ITrayBandSite, IUnknown) 270c2c66affSColin Finck { 271c2c66affSColin Finck /*** IUnknown methods ***/ 272c2c66affSColin Finck STDMETHOD_(HRESULT, QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; 273c2c66affSColin Finck STDMETHOD_(ULONG, AddRef) (THIS) PURE; 274c2c66affSColin Finck STDMETHOD_(ULONG, Release) (THIS) PURE; 275c2c66affSColin Finck /*** IBandSiteStreamCallback ***/ 276c2c66affSColin Finck STDMETHOD_(HRESULT, OnLoad)(THIS_ IStream *pStm, REFIID riid, PVOID *pvObj) PURE; 277c2c66affSColin Finck STDMETHOD_(HRESULT, OnSave)(THIS_ IUnknown *pUnk, IStream *pStm) PURE; 278c2c66affSColin Finck /*** ITrayBandSite methods ***/ 279c2c66affSColin Finck STDMETHOD_(HRESULT, IsTaskBand) (THIS_ IUnknown *punk) PURE; 280c2c66affSColin Finck STDMETHOD_(HRESULT, ProcessMessage) (THIS_ HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *plResult) PURE; 281c2c66affSColin Finck STDMETHOD_(HRESULT, AddContextMenus) (THIS_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags, IContextMenu **ppcm) PURE; 282c2c66affSColin Finck STDMETHOD_(HRESULT, Lock) (THIS_ BOOL bLock) PURE; 283c2c66affSColin Finck }; 284c2c66affSColin Finck #undef INTERFACE 285c2c66affSColin Finck 286c2c66affSColin Finck #if defined(COBJMACROS) 287c2c66affSColin Finck /*** IUnknown methods ***/ 288c2c66affSColin Finck #define ITrayBandSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 289c2c66affSColin Finck #define ITrayBandSite_AddRef(p) (p)->lpVtbl->AddRef(p) 290c2c66affSColin Finck #define ITrayBandSite_Release(p) (p)->lpVtbl->Release(p) 291c2c66affSColin Finck /*** IBandSiteStreamCallback methods ***/ 292c2c66affSColin Finck #define ITrayBandSite_OnLoad(p,a,b,c) (p)->lpVtbl->OnLoad(p,a,b,c) 293c2c66affSColin Finck #define ITrayBandSite_OnSave(p,a,b) (p)->lpVtbl->OnSave(p,a,b) 294c2c66affSColin Finck /*** ITrayBandSite methods ***/ 295c2c66affSColin Finck #define ITrayBandSite_IsTaskBand(p,a) (p)->lpVtbl->IsTaskBand(p,a) 296c2c66affSColin Finck #define ITrayBandSite_ProcessMessage(p,a,b,c,d,e) (p)->lpVtbl->ProcessMessage(p,a,b,c,d,e) 297c2c66affSColin Finck #define ITrayBandSite_AddContextMenus(p,a,b,c,d,e,f) (p)->lpVtbl->AddContextMenus(p,a,b,c,d,e,f) 298c2c66affSColin Finck #define ITrayBandSite_Lock(p,a) (p)->lpVtbl->Lock(p,a) 299c2c66affSColin Finck #endif 300c2c66affSColin Finck 301c2c66affSColin Finck HRESULT CTrayBandSite_CreateInstance(IN ITrayWindow *tray, IN IDeskBand* pTaskBand, OUT ITrayBandSite** pBandSite); 302c2c66affSColin Finck 303c2c66affSColin Finck /* 304c2c66affSColin Finck * startmnu.cpp 305c2c66affSColin Finck */ 306c2c66affSColin Finck 307c2c66affSColin Finck HRESULT StartMenuBtnCtxMenuCreator(ITrayWindow * TrayWnd, IN HWND hWndOwner, IContextMenu ** ppCtxMenu); 308c2c66affSColin Finck 309c2c66affSColin Finck IMenuPopup* 310c2c66affSColin Finck CreateStartMenu(IN ITrayWindow *Tray, 311c2c66affSColin Finck OUT IMenuBand **ppMenuBand, 312c2c66affSColin Finck IN HBITMAP hbmBanner OPTIONAL, 313c2c66affSColin Finck IN BOOL bSmallIcons); 314c2c66affSColin Finck 315c2c66affSColin Finck /* 316c2c66affSColin Finck * startmnucust.cpp 317c2c66affSColin Finck */ 318c2c66affSColin Finck VOID 319c2c66affSColin Finck ShowCustomizeClassic(HINSTANCE, HWND); 320c2c66affSColin Finck 321c2c66affSColin Finck /* 322c2c66affSColin Finck * startmnusite.cpp 323c2c66affSColin Finck */ 324c2c66affSColin Finck 325c2c66affSColin Finck HRESULT 326c2c66affSColin Finck CreateStartMenuSite(IN OUT ITrayWindow *Tray, const IID & riid, PVOID * ppv); 327c2c66affSColin Finck 328c2c66affSColin Finck /* 329c2c66affSColin Finck * trayntfy.c 330c2c66affSColin Finck */ 331c2c66affSColin Finck 332c2c66affSColin Finck /* TrayClockWnd */ 333c2c66affSColin Finck #define TCWM_GETMINIMUMSIZE (WM_USER + 0x100) 334c2c66affSColin Finck #define TCWM_UPDATETIME (WM_USER + 0x101) 335c2c66affSColin Finck 336c2c66affSColin Finck /* TrayNotifyWnd */ 337c2c66affSColin Finck #define TNWM_GETMINIMUMSIZE (WM_USER + 0x100) 338c2c66affSColin Finck #define TNWM_UPDATETIME (WM_USER + 0x101) 339c2c66affSColin Finck #define TNWM_SHOWCLOCK (WM_USER + 0x102) 340c2c66affSColin Finck #define TNWM_SHOWTRAY (WM_USER + 0x103) 341c2c66affSColin Finck #define TNWM_CHANGETRAYPOS (WM_USER + 0x104) 342c2c66affSColin Finck 343c2c66affSColin Finck #define NTNWM_REALIGN (0x1) 344c2c66affSColin Finck 345c2c66affSColin Finck class CTrayNotifyWnd; 346c2c66affSColin Finck 347c2c66affSColin Finck BOOL 348c2c66affSColin Finck RegisterTrayNotifyWndClass(VOID); 349c2c66affSColin Finck 350c2c66affSColin Finck VOID 351c2c66affSColin Finck UnregisterTrayNotifyWndClass(VOID); 352c2c66affSColin Finck 353c2c66affSColin Finck HWND 354*2ed535daSGiannis Adamopoulos CreateTrayNotifyWnd(IN OUT ITrayWindow *TrayWindow, CTrayNotifyWnd** ppTrayNotify); 355c2c66affSColin Finck 356c2c66affSColin Finck BOOL 357c2c66affSColin Finck TrayNotify_NotifyIconCmd(CTrayNotifyWnd* pTrayNotify, IN WPARAM wParam, IN LPARAM lParam); 358c2c66affSColin Finck 359c2c66affSColin Finck BOOL 360c2c66affSColin Finck TrayNotify_GetClockRect(CTrayNotifyWnd* pTrayNotify, OUT PRECT rcClock); 361c2c66affSColin Finck 362c2c66affSColin Finck /* 363c2c66affSColin Finck * taskswnd.c 364c2c66affSColin Finck */ 365c2c66affSColin Finck 366c2c66affSColin Finck #define TSWM_ENABLEGROUPING (WM_USER + 1) 367c2c66affSColin Finck #define TSWM_UPDATETASKBARPOS (WM_USER + 2) 368c2c66affSColin Finck 369c2c66affSColin Finck BOOL 370c2c66affSColin Finck RegisterTaskSwitchWndClass(VOID); 371c2c66affSColin Finck 372c2c66affSColin Finck VOID 373c2c66affSColin Finck UnregisterTaskSwitchWndClass(VOID); 374c2c66affSColin Finck 375c2c66affSColin Finck HWND 376c2c66affSColin Finck CreateTaskSwitchWnd(IN HWND hWndParent, 377c2c66affSColin Finck IN OUT ITrayWindow *Tray); 378c2c66affSColin Finck 379c2c66affSColin Finck HRESULT 380c2c66affSColin Finck Tray_OnStartMenuDismissed(ITrayWindow* Tray); 381c2c66affSColin Finck 382c2c66affSColin Finck HRESULT 383c2c66affSColin Finck IsSameObject(IN IUnknown *punk1, IN IUnknown *punk2); 384c2c66affSColin Finck 385c2c66affSColin Finck #endif /* _EXPLORER_PRECOMP__H_ */ 386