[EXPLORER] -If rshell is present and CBandSiteMenu_CreateInstance or CBandSite_Create...
[reactos.git] / reactos / base / shell / explorer / precomp.h
index 7ed7549..00c923e 100644 (file)
@@ -2,6 +2,12 @@
 #define _EXPLORER_PRECOMP__H_
 
 #define WIN7_COMPAT_MODE 0
+#define WIN7_DEBUG_MODE 0
+
+#if WIN7_DEBUG_MODE && !WIN7_COMPAT_MODE
+#undef WIN7_COMPAT_MODE
+#define WIN7_COMPAT_MODE 1
+#endif
 
 #include <stdio.h>
 #include <tchar.h>
@@ -59,8 +65,8 @@ extern HKEY hkExplorer;
 static inline 
 LONG
 SetWindowStyle(IN HWND hWnd,
-IN LONG dwStyleMask,
-IN LONG dwStyle)
+               IN LONG dwStyleMask,
+               IN LONG dwStyle)
 {
     return SHSetWindowBits(hWnd, GWL_STYLE, dwStyleMask, dwStyle);
 }
@@ -68,45 +74,48 @@ IN LONG dwStyle)
 static inline
 LONG
 SetWindowExStyle(IN HWND hWnd,
-IN LONG dwStyleMask,
-IN LONG dwStyle)
+                 IN LONG dwStyleMask,
+                 IN LONG dwStyle)
 {
     return SHSetWindowBits(hWnd, GWL_EXSTYLE, dwStyleMask, dwStyle);
 }
 
 HMENU
 LoadPopupMenu(IN HINSTANCE hInstance,
-IN LPCTSTR lpMenuName);
+              IN LPCWSTR lpMenuName);
 
 HMENU
 FindSubMenu(IN HMENU hMenu,
-IN UINT uItem,
-IN BOOL fByPosition);
+            IN UINT uItem,
+            IN BOOL fByPosition);
 
 BOOL
-GetCurrentLoggedOnUserName(OUT LPTSTR szBuffer,
-IN DWORD dwBufferSize);
+GetCurrentLoggedOnUserName(OUT LPWSTR szBuffer,
+                           IN DWORD dwBufferSize);
 
 BOOL
 FormatMenuString(IN HMENU hMenu,
-IN UINT uPosition,
-IN UINT uFlags,
-...);
+                 IN UINT uPosition,
+                 IN UINT uFlags,
+                 ...);
 
 BOOL
 GetExplorerRegValueSet(IN HKEY hKey,
-IN LPCTSTR lpSubKey,
-IN LPCTSTR lpValue);
+                       IN LPCWSTR lpSubKey,
+                       IN LPCWSTR lpValue);
 
 /*
  *  rshell.c
  */
 
+VOID InitRSHELL(VOID);
 HRESULT WINAPI _CStartMenu_Constructor(REFIID riid, void **ppv);
 HANDLE WINAPI _SHCreateDesktop(IShellDesktopTray *ShellDesk);
 BOOL WINAPI _SHDesktopMessageLoop(HANDLE hDesktop);
 DWORD WINAPI _WinList_Init(void);
 void WINAPI _ShellDDEInit(BOOL bInit);
+HRESULT WINAPI _CBandSiteMenu_CreateInstance(REFIID riid, void **ppv);
+HRESULT WINAPI _CBandSite_CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, void **ppv);
 
 /*
  * traywnd.c
@@ -129,7 +138,6 @@ DECLARE_INTERFACE_(ITrayWindow, IUnknown)
     STDMETHOD_(HWND, GetHWND) (THIS) PURE;
     STDMETHOD_(BOOL, IsSpecialHWND) (THIS_ HWND hWnd) PURE;
     STDMETHOD_(BOOL, IsHorizontal) (THIS) PURE;
-    STDMETHOD_(HFONT, GetCaptionFonts) (THIS_ HFONT *phBoldCaption) PURE;
     STDMETHOD_(HWND, DisplayProperties) (THIS) PURE;
     STDMETHOD_(BOOL, ExecContextMenuCmd) (THIS_ UINT uiCmd) PURE;
     STDMETHOD_(BOOL, Lock) (THIS_ BOOL bLock) PURE;
@@ -147,7 +155,6 @@ DECLARE_INTERFACE_(ITrayWindow, IUnknown)
 #define ITrayWindow_GetHWND(p)              (p)->lpVtbl->GetHWND(p)
 #define ITrayWindow_IsSpecialHWND(p,a)      (p)->lpVtbl->IsSpecialHWND(p,a)
 #define ITrayWindow_IsHorizontal(p)         (p)->lpVtbl->IsHorizontal(p)
-#define ITrayWindow_GetCaptionFonts(p,a)    (p)->lpVtbl->GetCaptionFonts(p,a)
 #define ITrayWindow_DisplayProperties(p)    (p)->lpVtbl->DisplayProperties(p)
 #define ITrayWindow_ExecContextMenuCmd(p,a) (p)->lpVtbl->ExecContextMenuCmd(p,a)
 #define ITrayWindow_Lock(p,a)               (p)->lpVtbl->Lock(p,a)
@@ -172,21 +179,30 @@ TrayMessageLoop(IN OUT ITrayWindow *Tray);
  */
 
 /* Structure to hold non-default options*/
-typedef struct _ADVANCED_SETTINGS
+typedef struct _TASKBAR_SETTINGS
 {
+    BOOL bLock;
+    BOOL bAutoHide;
+    BOOL bAlwaysOnTop;
+    BOOL bGroupButtons;
+    BOOL bShowQuickLaunch;
+    BOOL bShowClock;
     BOOL bShowSeconds;
-} ADVANCED_SETTINGS, *PADVANCED_SETTINGS;
+    BOOL bHideInactiveIcons;
+} TASKBAR_SETTINGS, *PTASKBAR_SETTINGS;
 
-extern ADVANCED_SETTINGS AdvancedSettings;
-extern const TCHAR szAdvancedSettingsKey [];
+extern TASKBAR_SETTINGS TaskBarSettings;
 
 VOID
-LoadAdvancedSettings(VOID);
+LoadTaskBarSettings(VOID);
+
+VOID
+SaveTaskBarSettings(VOID);
 
 BOOL
-SaveSettingDword(IN PCTSTR pszKeyName,
-IN PCTSTR pszValueName,
-IN DWORD dwValue);
+SaveSettingDword(IN LPCWSTR pszKeyName,
+                 IN LPCWSTR pszValueName,
+                 IN DWORD dwValue);
 
 /*
  * shellservice.cpp
@@ -217,36 +233,19 @@ DesktopCreateWindow(IN OUT ITrayWindow *Tray);
 VOID
 DesktopDestroyShellWindow(IN HANDLE hDesktop);
 
+
 /*
- * taskband.cpp
+ * notifyiconscust.cpp
  */
+VOID
+ShowCustomizeNotifyIcons(HINSTANCE, HWND);
 
-/* Internal Task Band CLSID */
-extern const GUID CLSID_ITaskBand;
-
-#define INTERFACE ITaskBand
-DECLARE_INTERFACE_(ITaskBand, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT, QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef) (THIS) PURE;
-    STDMETHOD_(ULONG, Release) (THIS) PURE;
-    /*** ITaskBand methods ***/
-    STDMETHOD_(HRESULT, GetRebarBandID)(THIS_ DWORD *pdwBandID) PURE;
-};
-#undef INTERFACE
-
-#if defined(COBJMACROS)
-/*** IUnknown methods ***/
-#define ITaskBand_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define ITaskBand_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define ITaskBand_Release(p)            (p)->lpVtbl->Release(p)
-/*** ITaskBand methods ***/
-#define ITaskBand_GetRebarBandID(p,a)   (p)->lpVtbl->GetRebarBandID(p,a)
-#endif
+/*
+ * taskband.cpp
+ */
 
-ITaskBand *
-CreateTaskBand(IN OUT ITrayWindow *Tray);
+extern const GUID CLSID_ITaskBand;  /* Internal Task Band CLSID */
+HRESULT CTaskBand_CreateInstance(IN ITrayWindow *Tray, HWND hWndStartButton, REFIID riid, void **ppv);
 
 /*
  * tbsite.cpp
@@ -285,10 +284,7 @@ DECLARE_INTERFACE_(ITrayBandSite, IUnknown)
 #define ITrayBandSite_Lock(p,a)                         (p)->lpVtbl->Lock(p,a)
 #endif
 
-ITrayBandSite *
-CreateTrayBandSite(IN OUT ITrayWindow *Tray,
-OUT HWND *phWndRebar,
-OUT HWND *phWndTaskSwitch);
+HRESULT CTrayBandSite_CreateInstance(IN ITrayWindow *tray, IN IDeskBand* pTaskBand, OUT ITrayBandSite** pBandSite);
 
 /*
  * startmnu.cpp
@@ -296,35 +292,17 @@ OUT HWND *phWndTaskSwitch);
 
 HRESULT StartMenuBtnCtxMenuCreator(ITrayWindow * TrayWnd, IN HWND hWndOwner, IContextMenu ** ppCtxMenu);
 
-#define INTERFACE IStartMenuSite
-DECLARE_INTERFACE_(IStartMenuSite, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT, QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef) (THIS) PURE;
-    STDMETHOD_(ULONG, Release) (THIS) PURE;
-    /*** IStartMenuSite ***/
-};
-#undef INTERFACE
-
-#if defined(COBJMACROS)
-/*** IUnknown methods ***/
-#define IStartMenuSite_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
-#define IStartMenuSite_AddRef(p)                         (p)->lpVtbl->AddRef(p)
-#define IStartMenuSite_Release(p)                        (p)->lpVtbl->Release(p)
-/*** IStartMenuSite methods ***/
-#endif
-
 IMenuPopup*
 CreateStartMenu(IN ITrayWindow *Tray,
-OUT IMenuBand **ppMenuBand,
-IN HBITMAP hbmBanner  OPTIONAL,
-IN BOOL bSmallIcons);
+                OUT IMenuBand **ppMenuBand,
+                IN HBITMAP hbmBanner OPTIONAL,
+                IN BOOL bSmallIcons);
 
-HRESULT
-UpdateStartMenu(IN OUT IMenuPopup *pMenuPopup,
-IN HBITMAP hbmBanner  OPTIONAL,
-IN BOOL bSmallIcons);
+/*
+ * startmnucust.cpp
+ */
+VOID 
+ShowCustomizeClassic(HINSTANCE, HWND);
 
 /*
 * startmnusite.cpp
@@ -350,6 +328,8 @@ CreateStartMenuSite(IN OUT ITrayWindow *Tray, const IID & riid, PVOID * ppv);
 
 #define NTNWM_REALIGN   (0x1)
 
+class CTrayNotifyWnd;
+
 BOOL
 RegisterTrayNotifyWndClass(VOID);
 
@@ -357,15 +337,13 @@ VOID
 UnregisterTrayNotifyWndClass(VOID);
 
 HWND
-CreateTrayNotifyWnd(IN OUT ITrayWindow *TrayWindow,
-IN BOOL bHideClock);
+CreateTrayNotifyWnd(IN OUT ITrayWindow *TrayWindow, IN BOOL bHideClock, CTrayNotifyWnd** ppTrayNotify);
 
-VOID
-TrayNotify_NotifyMsg(IN WPARAM wParam,
-IN LPARAM lParam);
+BOOL
+TrayNotify_NotifyIconCmd(CTrayNotifyWnd* pTrayNotify, IN WPARAM wParam, IN LPARAM lParam);
 
 BOOL
-TrayNotify_GetClockRect(OUT PRECT rcClock);
+TrayNotify_GetClockRect(CTrayNotifyWnd* pTrayNotify, OUT PRECT rcClock);
 
 /*
  * taskswnd.c
@@ -385,7 +363,7 @@ CreateTaskSwitchWnd(IN HWND hWndParent,
 IN OUT ITrayWindow *Tray);
 
 HRESULT
-Tray_OnStartMenuDismissed();
+Tray_OnStartMenuDismissed(ITrayWindow* Tray);
 
 HRESULT
 IsSameObject(IN IUnknown *punk1, IN IUnknown *punk2);