static void ReleaseManager(CMenuFocusManager * obj);
private:
+ static LRESULT CALLBACK s_MsgFilterHook(INT nCode, WPARAM wParam, LPARAM lParam);
static LRESULT CALLBACK s_GetMsgHook(INT nCode, WPARAM wParam, LPARAM lParam);
private:
CMenuBand * m_currentBand;
HWND m_currentFocus;
- HHOOK m_hHook;
+ HMENU m_currentMenu;
+ HWND m_parentToolbar;
+ HHOOK m_hGetMsgHook;
+ HHOOK m_hMsgFilterHook;
DWORD m_threadId;
BOOL m_mouseTrackDisabled;
WPARAM m_lastMoveFlags;
LPARAM m_lastMovePos;
+ POINT m_ptPrev;
// TODO: make dynamic
#define MAX_RECURSE 20
private:
LRESULT GetMsgHook(INT nCode, WPARAM wParam, LPARAM lParam);
- HRESULT PlaceHooks(HWND window);
- HRESULT RemoveHooks(HWND window);
- HRESULT UpdateFocus(CMenuBand * newBand);
- HRESULT ActivationChange(HWND newHwnd);
- void DisableMouseTrack(HWND enableTo, BOOL disableThis);
+ LRESULT MsgFilterHook(INT nCode, WPARAM wParam, LPARAM lParam);
+ HRESULT PlaceHooks();
+ HRESULT RemoveHooks();
+ HRESULT UpdateFocus(CMenuBand * newBand, HMENU popupToTrack = NULL);
HRESULT IsTrackedWindow(HWND hWnd);
+ void DisableMouseTrack(HWND enableTo, BOOL disableThis);
+
public:
HRESULT PushMenu(CMenuBand * mb);
HRESULT PopMenu(CMenuBand * mb);
+ HRESULT PushTrackedPopup(CMenuBand * mb, HMENU popup);
+ HRESULT PopTrackedPopup(CMenuBand * mb, HMENU popup);
};