|
|
#ifndef _TRAY_H
#define _TRAY_H
#include "trayp.h"
#include "cwndproc.h"
#ifdef __cplusplus
#include "traynot.h"
#include "ssomgr.h"
typedef struct tagHWNDANDPLACEMENT { HWND hwnd; BOOL fRestore; WINDOWPLACEMENT wp; } HWNDANDPLACEMENT, *LPHWNDANDPLACEMENT;
typedef struct tagAPPBAR { HWND hwnd; UINT uCallbackMessage; RECT rc; UINT uEdge; } APPBAR, *PAPPBAR;
typedef struct tagWINDOWPOSITIONS { UINT idRes; HDSA hdsaWP; } WINDOWPOSITIONS, *LPWINDOWPOSITIONS;
typedef struct tagTRAYVIEWOPTS { BOOL fAlwaysOnTop; BOOL fSMSmallIcons; BOOL fHideClock; BOOL fNoTrayItemsDisplayPolicyEnabled; BOOL fNoAutoTrayPolicyEnabled; BOOL fAutoTrayEnabledByUser; BOOL fShowQuickLaunch; UINT uAutoHide; // AH_HIDING , AH_ON
} TRAYVIEWOPTS;
// TVSD Flags.
#define TVSD_NULL 0x0000
#define TVSD_AUTOHIDE 0x0001
#define TVSD_TOPMOST 0x0002
#define TVSD_SMSMALLICONS 0x0004
#define TVSD_HIDECLOCK 0x0008
// old Win95 TVSD struct
typedef struct _TVSD95 { DWORD dwSize; LONG cxScreen; LONG cyScreen; LONG dxLeft; LONG dxRight; LONG dyTop; LONG dyBottom; DWORD uAutoHide; RECTL rcAutoHide; DWORD uStuckPlace; DWORD dwFlags; } TVSD95;
// Nashville tray save data
typedef struct _TVSD { DWORD dwSize; LONG lSignature; // signature (must be negative)
DWORD dwFlags; // TVSD_ flags
DWORD uStuckPlace; // current stuck edge
SIZE sStuckWidths; // widths of stuck rects
RECT rcLastStuck; // last stuck position in pixels
} TVSD;
// convenient union for reading either
typedef union _TVSDCOMPAT { TVSD t; // new format
TVSD95 w95; // old format
} TVSDCOMPAT; #define TVSDSIG_CURRENT (-1L)
#define IS_CURRENT_TVSD(t) ((t.dwSize >= sizeof(TVSD)) && (t.lSignature < 0))
#define MAYBE_WIN95_TVSD(t) (t.dwSize == sizeof(TVSD95))
DWORD _GetDefaultTVSDFlags();
class CTray;
class CDropTargetBase : public IDropTarget { public: // *** IUnknown methods ***
STDMETHODIMP QueryInterface(REFIID riid, void ** ppvObj); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // *** IDropTarget methods ***
STDMETHODIMP DragEnter(IDataObject *pdtobj, DWORD grfKeyState, POINTL ptl, DWORD *pdwEffect); STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect); STDMETHODIMP DragLeave(); STDMETHODIMP Drop(IDataObject *pdtobj, DWORD grfKeyState, POINTL ptl, DWORD *pdwEffect);
CDropTargetBase(CTray* ptray) : _ptray(ptray) {}
protected:
CTray* _ptray; };
class CTrayDropTarget : public CDropTargetBase { public: // *** IDropTarget methods ***
STDMETHODIMP DragEnter(IDataObject *pdtobj, DWORD grfKeyState, POINTL ptl, DWORD *pdwEffect); STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
CTrayDropTarget(); };
class CStartDropTarget : public CDropTargetBase { public: // *** IDropTarget methods ***
STDMETHODIMP DragEnter(IDataObject *pdtobj, DWORD grfKeyState, POINTL ptl, DWORD *pdwEffect); STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect); STDMETHODIMP DragLeave(); STDMETHODIMP Drop(IDataObject *pdtobj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
CStartDropTarget();
protected: HRESULT _GetStartMenuDropTarget(IDropTarget** pptgt); void _StartAutoOpenTimer(POINTL *pptl);
DWORD _dwEffectsAllowed; };
class CDeskTray : public IDeskTray { public: // *** IUnknown methods ***
STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj); STDMETHODIMP_(ULONG)AddRef(); STDMETHODIMP_(ULONG) Release();
// *** IDeskTray methods ***
STDMETHODIMP_(UINT) AppBarGetState(); STDMETHODIMP GetTrayWindow(HWND* phwndTray); STDMETHODIMP SetDesktopWindow(HWND hwndDesktop); STDMETHODIMP SetVar(int var, DWORD value);
protected: CDeskTray(); // noone but tray should instantiate
CTray* _ptray; friend class CTray; };
EXTERN_C void Tray_OnStartMenuDismissed(); #ifdef FEATURE_STARTPAGE
EXTERN_C void Tray_OnStartPageDismissed(); EXTERN_C void Tray_MenuInvoke(int idCmd); #endif
EXTERN_C void Tray_SetStartPaneActive(BOOL fActive); EXTERN_C void Tray_UnlockStartPane();
#define TPF_TASKBARPAGE 0x00000001
#define TPF_STARTMENUPAGE 0x00000002
#define TPF_INVOKECUSTOMIZE 0x00000004 // start with the "Customize..." sub-dialog open
EXTERN_C void Tray_DoProperties(DWORD dwFlags);
#define AH_OFF 0x00
#define AH_ON 0x01
#define AH_HIDING 0x02
class CTray : public CImpWndProc { public:
//
// miscellaneous public methods
//
CTray(); void HandleWindowDestroyed(HWND hwnd); void HandleFullScreenApp(HWND hwnd); void RealityCheck(); DWORD getStuckPlace() { return _uStuckPlace; } void InvisibleUnhide(BOOL fShowWindow); void ContextMenuInvoke(int idCmd); HMENU BuildContextMenu(BOOL fIncludeTime); void AsyncSaveSettings(); BOOL Init(); void Unhide(); void VerifySize(BOOL fWinIni, BOOL fRoundUp = FALSE); void SizeWindows(); int HotkeyAdd(WORD wHotkey, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlItem, BOOL fClone); void CheckWindowPositions(); void SaveWindowPositions(UINT idRes); void ForceStartButtonUp(); void DoProperties(DWORD dwFlags); void LogFailedStartupApp(); HWND GetTaskWindow() { return _hwndTasks; } HWND GetTrayTips() { return _hwndTrayTips; } IDeskTray* GetDeskTray() { return &_desktray; } IMenuPopup* GetStartMenu() { return _pmpStartMenu; }; void StartMenuContextMenu(HWND hwnd, DWORD dwPos); BOOL IsTaskbarFading() { return _fTaskbarFading; };
DWORD CountOfRunningPrograms(); void ClosePopupMenus(); HWND GetTrayNotifyHWND() { return _hwndNotify; }
void CreateStartButtonBalloon(UINT idsTitle, UINT idsMessage);
void GetTrayViewOpts(TRAYVIEWOPTS* ptvo) { ptvo->fAlwaysOnTop = _fAlwaysOnTop; ptvo->fSMSmallIcons = _fSMSmallIcons; ptvo->fHideClock = _fHideClock; ptvo->fNoTrayItemsDisplayPolicyEnabled = _trayNotify.GetIsNoTrayItemsDisplayPolicyEnabled(); ptvo->fNoAutoTrayPolicyEnabled = _trayNotify.GetIsNoAutoTrayPolicyEnabled(); ptvo->fAutoTrayEnabledByUser = _trayNotify.GetIsAutoTrayEnabledByUser(); ptvo->uAutoHide = _uAutoHide; // AH_HIDING , AH_ON
ptvo->fShowQuickLaunch = (-1 != SendMessage(_hwnd, WMTRAY_TOGGLEQL, 0, (LPARAM)-1)); } void SetTrayViewOpts(const TRAYVIEWOPTS* ptvo) { _UpdateAlwaysOnTop(ptvo->fAlwaysOnTop); SendMessage(_hwnd, WMTRAY_TOGGLEQL, 0, (LPARAM)ptvo->fShowQuickLaunch); _fSMSmallIcons = ptvo->fSMSmallIcons; _fHideClock = ptvo->fHideClock; _uAutoHide = ptvo->uAutoHide; // AH_HIDING , AH_ON
// There is no necessity to save the fNoAutoTrayPolicyEnabled,
// fNoTrayItemsDisplayPolicyEnabled, fAutoTrayEnabledByUser settings...
}
BOOL GetIsNoToolbarsOnTaskbarPolicyEnabled() const { return _fNoToolbarsOnTaskbarPolicyEnabled; }
STDMETHODIMP_(ULONG) AddRef() { return 2; } STDMETHODIMP_(ULONG) Release() { return 1; }
//
// miscellaneous public data
//
// from TRAYSTUFF
BOOL _fCoolTaskbar; BOOL _bMainMenuInit; BOOL _fFlashing; // currently flashing (HSHELL_FLASH)
BOOL _fStuckRudeApp; BOOL _fDeferedPosRectChange; BOOL _fSelfSizing; BOOL _fBalloonUp; // true if balloon notification is up
BOOL _fIgnoreDoneMoving; BOOL _fShowSizingBarAlways; BOOL _fSkipErase;
BOOL _fIsLogoff; BOOL _fBandSiteInitialized;
HWND _hwndStart; HWND _hwndLastActive;
IBandSite *_ptbs;
UINT _uAutoHide; // AH_HIDING , AH_ON
HBITMAP _hbmpStartBkg; HFONT _hFontStart;
RECT _arStuckRects[4]; // temporary for hit-testing
CTrayNotify _trayNotify;
protected: // protected methods
friend class CTaskBarPropertySheet;
static DWORD WINAPI SyncThreadProc(void *pv); DWORD _SyncThreadProc(); static DWORD WINAPI MainThreadProc(void *pv);
int _GetPart(BOOL fSizingBar, UINT uStuckPlace); void _UpdateVertical(UINT uStuckPlace, BOOL fForce = FALSE); void _RaiseDesktop(BOOL fRaise, BOOL fRestoreWindows);
BOOL _RestoreWindowPositions(BOOL fPostLowerDesktop); void _RestoreWindowPos();
static BOOL SavePosEnumProc(HWND hwnd, LPARAM lParam);
BOOL _IsPopupMenuVisible(); BOOL _IsActive(); void _AlignStartButton(); void _GetWindowSizes(UINT uStuckPlace, PRECT prcClient, PRECT prcView, PRECT prcNotify); void _GetStuckDisplayRect(UINT uStuckPlace, LPRECT prcDisplay); void _Hide(); HWND _GetClockWindow(void); HRESULT _LoadInProc(PCOPYDATASTRUCT pcds);
LRESULT _CreateWindows(); LRESULT _InitStartButtonEtc(); void _AdjustMinimizedMetrics(); void _MessageLoop();
void _BuildStartMenu(); void _DestroyStartMenu(); int _TrackMenu(HMENU hmenu);
static DWORD WINAPI RunDlgThreadProc(void *pv); DWORD _RunDlgThreadProc(HANDLE hdata);
int _GetQuickLaunchID(); int _ToggleQL(int iVisible);
static BOOL TileEnumProc(HWND hwnd, LPARAM lParam); BOOL _CanTileAnyWindows() { return !EnumWindows(TileEnumProc, (LPARAM)this); }
void _RegisterDropTargets(); void _RevokeDropTargets();
BOOL _UpdateAlwaysOnTop(BOOL fAlwaysOnTop);
HMONITOR _GetDisplayRectFromRect(LPRECT prcDisplay, LPCRECT prcIn, UINT uFlags); HMONITOR _GetDisplayRectFromPoint(LPRECT prcDisplay, POINT pt, UINT uFlags); void _AdjustRectForSizingBar(UINT uStuckPlace, LPRECT prc, int iIncrement); void _MakeStuckRect(LPRECT prcStick, LPCRECT prcBound, SIZE size, UINT uStick); void _ScreenSizeChange(HWND hwnd); void _ContextMenu(DWORD dwPos, BOOL fSetTime); void _StuckTrayChange(); void _ResetZorder(); void _HandleSize(); BOOL _HandleSizing(WPARAM code, LPRECT lprc, UINT uStuckPlace); void _RegisterGlobalHotkeys(); void _UnregisterGlobalHotkeys(); void _HandleGlobalHotkey(WPARAM wParam); void _SetAutoHideTimer(); void _ComputeHiddenRect(LPRECT prc, UINT uStuck); UINT _GetDockedRect(LPRECT prc, BOOL fMoving); void _CalcClipCoords(RECT *prcClip, const RECT *prcMonitor, const RECT *prcNew); void _ClipInternal(const RECT *prcClip); void _ClipWindow(BOOL fEnableClipping); UINT _CalcDragPlace(POINT pt); UINT _RecalcStuckPos(LPRECT prc); void _AutoHideCollision(); LRESULT _HandleMeasureItem(HWND hwnd, LPMEASUREITEMSTRUCT lpmi); void _OnDesktopState(LPARAM lParam); BOOL _ToggleLanguageBand(BOOL fShowIt);
LRESULT _OnDeviceChange(HWND hwnd, WPARAM wParam, LPARAM lParam); DWORD _PtOnResizableEdge(POINT pt, LPRECT prcClient); BOOL _MapNCToClient(LPARAM* plParam); BOOL _TryForwardNCToClient(UINT uMsg, LPARAM lParam); LRESULT _OnSessionChange(WPARAM wParam, LPARAM lParam); LRESULT _NCPaint(HRGN hrgn); LRESULT v_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL _CanMinimizeAll(); BOOL _MinimizeAll(BOOL fPostRaiseDesktop); void _Command(UINT idCmd); LONG _SetAutoHideState(BOOL fAutoHide); BOOL _ShouldWeShowTheStartButtonBalloon(); void _DontShowTheStartButtonBalloonAnyMore(); void _DestroyStartButtonBalloon(); void _ShowStartButtonToolTip(); void _ToolbarMenu(); HFONT _CreateStartFont(HWND hwndTray); void _SaveTrayStuff(void); void _SaveTray(void); void _SaveTrayAndDesktop(void); void _SlideStep(HWND hwnd, const RECT *prcMonitor, const RECT *prcOld, const RECT *prcNew); void _DoExitWindows(HWND hwnd);
static LRESULT WINAPI StartButtonSubclassWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT _StartButtonSubclassWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void _ResizeStuckRects(RECT *arStuckRects);
static DWORD WINAPI PropertiesThreadProc(void* pv); DWORD _PropertiesThreadProc(DWORD dwFlags);
int _RecomputeWorkArea(HWND hwndCause, HMONITOR hmon, LPRECT prcWork);
void _StartButtonReset(); void _RefreshStartMenu(); void _ExploreCommonStartMenu(BOOL bExplore);
BOOL _CreateClockWindow(); void _CreateTrayTips(); HWND _CreateStartButton(); BOOL _InitTrayClass(); void _SetStuckMonitor(); void _GetSaveStateAndInitRects(); LRESULT _OnCreateAsync(); LRESULT _OnCreate(HWND hwnd); void _UpdateBandSiteStyle(); void _InitBandsite(); void _InitNonzeroGlobals(); void _CreateTrayWindow(); void _DoneMoving(LPWINDOWPOS lpwp); void _SnapshotStuckRectSize(UINT uPlace); void _RecomputeAllWorkareas(); void _SlideWindow(HWND hwnd, RECT *prc, BOOL fShow); void _UnhideNow(); void _HandleEnterMenuLoop(); void _HandleExitMenuLoop(); void _SetUnhideTimer(LONG x, LONG y); void _OnNewSystemSizes(); static int WINAPI CheckWndPosEnumProc(void *pItem, void *pData); void _HandleTimer(WPARAM wTimerID); void _KickStartAutohide(); void _HandleMoving(WPARAM wParam, LPRECT lprc); LRESULT _HandleDestroy(); void _SetFocus(HWND hwnd); void _ActAsSwitcher(); void _OnWinIniChange(HWND hwnd, WPARAM wParam, LPARAM lParam); LRESULT _ShortcutRegisterHotkey(HWND hwnd, WORD wHotkey, ATOM atom); LRESULT _SetHotkeyEnable(HWND hwnd, BOOL fEnable); void _HandleWindowPosChanging(LPWINDOWPOS lpwp); void _HandlePowerStatus(UINT uMsg, WPARAM wParam, LPARAM lParam); void _DesktopCleanup_GetFileTimeNDaysFromGivenTime(const FILETIME *pftGiven, FILETIME * pftReturn, int iDays); BOOL _DesktopCleanup_ShouldRun(); void _CheckDesktopCleanup(void);
static BOOL_PTR WINAPI RogueProgramFileDlgProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam); void _CheckForRogueProgramFile(); void _OnWaitCursorNotify(LPNMHDR pnm); void _HandlePrivateCommand(LPARAM lParam); void _OnFocusMsg(UINT uMsg, WPARAM wParam, LPARAM lParam); int _OnFactoryMessage(WPARAM wParam, LPARAM lParam); int _OnTimerService(UINT uMsg, WPARAM wParam, LPARAM lParam); void _HandleDelayBootStuff(); void _HandleChangeNotify(WPARAM wParam, LPARAM lParam); void _CheckStagingAreaOnTimer();
BOOL _IsTopmost(); void _RefreshSettings();
static BOOL PropagateEnumProc(HWND hwnd, LPARAM lParam); void _PropagateMessage(HWND hwnd, UINT uMessage, WPARAM wParam, LPARAM lParam); BOOL _IsAutoHide() { return _uAutoHide & AH_ON; } void _RunDlg();
static void WINAPI SettingsUIPropSheetCallback(DWORD nStartPage); static DWORD WINAPI SettingsUIThreadProc(void *pv);
static BOOL WINAPI FullScreenEnumProc(HMONITOR hmon, HDC hdc, LPRECT prc, LPARAM dwData);
static BOOL WINAPI MonitorEnumProc(HMONITOR hMonitor, HDC hdc, LPRECT lprc, LPARAM lData);
// appbar stuff
HRESULT _AppBarSetState(UINT uFlags); void _AppBarActivationChange(PTRAYAPPBARDATA ptabd); BOOL _AppBarSetAutoHideBar(PTRAYAPPBARDATA ptabd); BOOL _AppBarSetAutoHideBar2(HWND hwnd, BOOL fAutoHide, UINT uEdge); void _AppBarActivationChange2(HWND hwnd, UINT uEdge); HWND _AppBarGetAutoHideBar(UINT uEdge); LRESULT _OnAppBarMessage(PCOPYDATASTRUCT pcds); void _AppBarSubtractRect(PAPPBAR pab, LPRECT lprc); void _AppBarSubtractRects(HMONITOR hmon, LPRECT lprc); void _StuckAppChange(HWND hwndCause, LPCRECT prcOld, LPCRECT prcNew, BOOL bTray); void _AppBarNotifyAll(HMONITOR hmon, UINT uMsg, HWND hwndExclude, LPARAM lParam); void _AppBarGetTaskBarPos(PTRAYAPPBARDATA ptabd); void _NukeAppBar(int i); void _AppBarRemove(PTRAYAPPBARDATA ptabd); PAPPBAR _FindAppBar(HWND hwnd); BOOL _AppBarNew(PTRAYAPPBARDATA ptabd); BOOL _AppBarOutsideOf(PAPPBAR pabReq, PAPPBAR pab); void _AppBarQueryPos(PTRAYAPPBARDATA ptabd); void _AppBarSetPos(PTRAYAPPBARDATA ptabd);
// hotkey stuff
void _HandleHotKey(int nID); LRESULT _ShortcutUnregisterHotkey(HWND hwnd, WORD wHotkey); LRESULT _RegisterHotkey(HWND hwnd, int i); LRESULT _UnregisterHotkey(HWND hwnd, int i); HWND _HotkeyInUse(WORD wHK); int _RestoreHotkeyList(HWND hwnd); UINT _HotkeyGetFreeItemIndex(void); int _HotkeyAddCached(WORD wGHotkey, LPITEMIDLIST pidl); int _HotkeySave(void); int _HotkeyRemove(WORD wHotkey); int _HotkeyRemoveCached(WORD wGHotkey); BOOL _HotkeyCreate(void);
// Startup troubleshooter stuff
static void WINAPI TroubleShootStartupCB(HWND hwnd, UINT uMsg, UINT_PTR idTimer, DWORD dwTime); void _OnHandleStartupFailed();
// App compat stuff
static void CALLBACK _MigrateOldBrowserSettingsCB(PVOID lpParameter, BOOLEAN); void _MigrateOldBrowserSettings();
// protected data
HWND _hwndNotify; // clock window
HWND _hwndStartBalloon; HWND _hwndRude; HWND _hwndTrayTips; HWND _hwndTasks;
HMENU _hmenuStart;
SIZE _sizeStart; // height/width of the start button
SIZE _sizeSizingBar; int _iAlpha;
HIMAGELIST _himlStartFlag;
CShellServiceObjectMgr _ssomgr; CStartDropTarget _dtStart; CTrayDropTarget _dtTray; CDeskTray _desktray;
#define MM_OTHER 0x01
#define MM_SHUTDOWN 0x02
UINT _uModalMode;
BOOL _fAlwaysOnTop; BOOL _fSMSmallIcons; BOOL _fGlobalHotkeyDisable; BOOL _fThreadTerminate; BOOL _fSysSizing; // being sized by user; hold off on recalc
BOOL _fHideClock; BOOL _fShouldResize; BOOL _fMonitorClipped; BOOL _fHandledDelayBootStuff; BOOL _fUndoEnabled; BOOL _fProcessingDesktopRaise; BOOL _fFromStart; // Track when context menu popping up from Start button
BOOL _fTaskbarFading; BOOL _fNoToolbarsOnTaskbarPolicyEnabled; BOOL _fForegroundLocked;
POINT _ptLastHittest;
HWND _hwndRun; HWND _hwndProp; HWND _hwndRebar;
HACCEL _hMainAccel; // Main accel table
int _iWaitCount;
HDPA _hdpaAppBars; // app bar info
HDSA _hdsaHKI; // hotkey info
CRITICAL_SECTION _csHotkey; // Protects _hdsaHKI, hotkey info
LPWINDOWPOSITIONS _pPositions; // saved windows positions (for undo of minimize all)
UINT _uStuckPlace; // the stuck place
SIZE _sStuckWidths; // width/height of tray
UINT _uMoveStuckPlace; // stuck status during a move operation
// these two must go together for save reasons
RECT _rcOldTray; // last place we stuck ourselves (for work area diffs)
HMONITOR _hmonStuck; // The current HMONITOR we are on
HMONITOR _hmonOld; // The last hMonitor we were on
IMenuBand* _pmbStartMenu; //For Message translation.
IMenuPopup* _pmpStartMenu; //For start menu cache
IMenuBand* _pmbStartPane; // For Message translation.
IMenuPopup* _pmpStartPane; // For navigating the start pane
void * _pvStartPane; // For delayed initilization
IStartMenuPin *_psmpin; // For drag/drop to Start Button
IMenuBand* _pmbTasks; //For Message translation.
IMenuPopup* _pmpTasks;
IDeskBand* _pdbTasks;
WNDPROC _pfnButtonProc; // Button subclass.
UINT _uDown; BOOL _fAllowUp; // Is the start button allowed to be in the up position?
UINT _uStartButtonState; // crazy state machine -- see Tray_SetStartPaneActive
DWORD _tmOpen; // time the Start Menu was opened (for debouncing)
int _cHided; int _cyTrayBorders;
HTHEME _hTheme;
//
// amount of time to show/hide the tray
// to turn sliding off set these to 0
//
int _dtSlideHide; int _dtSlideShow;
HWND _hwndFocusBeforeRaise; BOOL _fMinimizedAllBeforeRaise;
BOOL _fCanSizeMove; // can be turned off by user setting
RECT _rcSizeMoveIgnore;
// event to tell the services on NT5 that we are done with boot
// and they can do their stuff
HANDLE _hShellReadyEvent;
// BOGUS: nuke this (multiple monitors...)
HWND _aHwndAutoHide[ABE_MAX];
// Users and Passwords must send this message to get the "real" logged on user to log off.
// This is required since sometimes U&P runs in the context of a different user and logging this
// other user off does no good. See ext\netplwiz for the other half of this...-dsheldon.
UINT _uLogoffUser; UINT _uStartButtonBalloonTip; UINT _uWinMM_DeviceChange;
BOOL _fEarlyStartupFailure; BOOL _fStartupTroubleshooterLaunched;
ULONG _uNotify; BOOL _fUseChangeNotifyTimer, _fChangeNotifyTimerRunning;
BOOL _fIsDesktopLocked; BOOL _fIsDesktopConnected;
// These member variables are used to keep track of downlevel apps
// which attempt to take over as default web browser
HKEY _hkHTTP; HANDLE _hHTTPEvent; HANDLE _hHTTPWait;
friend class CDeskTray; friend class CStartDropTarget; friend class CTrayDropTarget; friend class CDropTargetBase;
friend void Tray_OnStartMenuDismissed(); #ifdef FEATURE_STARTPAGE
friend void Tray_OnStartPageDismissed(); #endif
friend void Tray_SetStartPaneActive(BOOL fActive); friend void Tray_UnlockStartPane(); friend void Tray_DoProperties(DWORD dwFlags); };
extern CTray c_tray;
extern BOOL g_fInSizeMove; extern UINT g_uStartButtonAllowPopup;
BOOL _IsSizeMoveEnabled(); BOOL _IsSizeMoveRestricted();
#endif // __cplusplus
#endif // _TRAY_H
|