#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>
#include <strsafe.h>
#include <undocuser.h>
+#include <shlwapi_undoc.h>
#include <shlobj_undoc.h>
#include <shlguid_undoc.h>
#include <undocshell.h>
WINE_DEFAULT_DEBUG_CHANNEL(explorernew);
-/* dynamic imports due to lack of support in msvc linker libs */
-typedef INT(APIENTRY *REGSHELLHOOK)(HWND, DWORD);
-#ifdef UNICODE
-#define PROC_NAME_DRAWCAPTIONTEMP "DrawCaptionTempW"
-typedef BOOL(APIENTRY *DRAWCAPTEMP)(HWND, HDC, const RECT*, HFONT, HICON, LPCWSTR, UINT);
-#else
-#define PROC_NAME_DRAWCAPTIONTEMP "DrawCaptionTempA"
-typedef BOOL (APIENTRY *DRAWCAPTEMP)(HWND, HDC, const RECT*, HFONT, HICON, LPCSTR, UINT);
-#endif
-typedef HRESULT(APIENTRY *SHINVDEFCMD)(HWND, IShellFolder*, LPCITEMIDLIST);
-typedef void (APIENTRY *RUNFILEDLG)(HWND, HICON, LPCWSTR, LPCWSTR, LPCWSTR, UINT);
-typedef void (APIENTRY *EXITWINDLG)(HWND);
-typedef HRESULT(APIENTRY *SHWINHELP)(HWND, LPWSTR, UINT, DWORD);
-
-/* Constants for RunFileDlg */
-#define RFF_CALCDIRECTORY 0x04 /* Calculates the working directory from the file name. */
-
#define ASSERT(cond) \
do if (!(cond)) { \
Win32DbgPrint(__FILE__, __LINE__, "ASSERTION %s FAILED!\n", #cond); \
} while (0)
extern HINSTANCE hExplorerInstance;
-extern HMODULE hUser32;
extern HANDLE hProcessHeap;
extern HKEY hkExplorer;
-extern DRAWCAPTEMP DrawCapTemp;
-
-/*
- * dragdrop.c
- */
-
-typedef struct _DROPTARGET_CALLBACKS
-{
- HRESULT(*OnDragEnter)(IN IDropTarget *pDropTarget,
- IN PVOID Context,
- IN const FORMATETC *Format,
- IN DWORD grfKeyState,
- IN POINTL pt,
- IN OUT DWORD *pdwEffect);
- HRESULT(*OnDragOver)(IN IDropTarget *pDropTarget,
- IN PVOID Context,
- IN DWORD grfKeyState,
- IN POINTL pt,
- IN OUT DWORD *pdwEffect);
- HRESULT(*OnDragLeave)(IN IDropTarget *pDropTarget,
- IN PVOID Context);
- HRESULT(*OnDrop)(IN IDropTarget *pDropTarget,
- IN PVOID Context,
- IN const FORMATETC *Format,
- IN DWORD grfKeyState,
- IN POINTL pt,
- IN OUT DWORD *pdwEffect);
-} DROPTARGET_CALLBACKS, *PDROPTARGET_CALLBACKS;
-
-IDropTarget *
-CreateDropTarget(IN HWND hwndTarget,
-IN DWORD nSupportedFormats,
-IN const FORMATETC *Formats OPTIONAL,
-IN PVOID Context OPTIONAL,
-IN const DROPTARGET_CALLBACKS *Callbacks OPTIONAL);
/*
* explorer.c
*/
-#define IDHK_RUN 1 /* Win+R */
-
+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);
+}
+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
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;
#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)
LoadAdvancedSettings(VOID);
BOOL
-SaveSettingDword(IN PCTSTR pszKeyName,
-IN PCTSTR pszValueName,
-IN DWORD dwValue);
+SaveSettingDword(IN LPCWSTR pszKeyName,
+ IN LPCWSTR pszValueName,
+ IN DWORD dwValue);
/*
* shellservice.cpp
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, REFIID riid, void **ppv);
/*
* tbsite.cpp
#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
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
#define NTNWM_REALIGN (0x1)
+class CTrayNotifyWnd;
+
BOOL
RegisterTrayNotifyWndClass(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
IN OUT ITrayWindow *Tray);
HRESULT
-Tray_OnStartMenuDismissed();
+Tray_OnStartMenuDismissed(ITrayWindow* Tray);
HRESULT
IsSameObject(IN IUnknown *punk1, IN IUnknown *punk2);