1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #ifndef NULLOSFT_MEDIALIBRARY_SKINNED_MENU_THREAD_INFO_HEADER
- #define NULLOSFT_MEDIALIBRARY_SKINNED_MENU_THREAD_INFO_HEADER
- #if defined(_MSC_VER) && (_MSC_VER >= 1020)
- #pragma once
- #endif
- #include <wtypes.h>
- #include "./klib/khash.h"
- #ifdef _WIN64
- KHASH_MAP_INIT_INT64(intptr_map, HWND);
- #else
- KHASH_MAP_INIT_INT(intptr_map, HWND);
- #endif
- KHASH_SET_INIT_INT(int_set)
- class SkinnedMenu;
- class SkinnedMenuWnd;
- class SkinnedMenuThreadInfo
- {
- protected:
- SkinnedMenuThreadInfo();
- ~SkinnedMenuThreadInfo();
- public:
- static HRESULT GetInstance(BOOL allowCreate, SkinnedMenuThreadInfo **instance);
- public:
- size_t AddRef();
- size_t Release();
- BOOL SetAttachHook(SkinnedMenu *menu);
- BOOL RemoveAttachHook(SkinnedMenu *menu);
- BOOL IsAttachHookActive();
- BOOL SetValidationHook(SkinnedMenuWnd *window);
- BOOL RemoveValidationHook(SkinnedMenuWnd *window);
- BOOL IsValidationHookActive();
-
- BOOL RegisterMenu(HMENU menu, HWND window);
- BOOL UnregisterMenu(HMENU menu);
- HWND FindMenuWindow(HMENU menu);
- void ClaimId(unsigned int id);
- void ReleaseId(unsigned int id);
- unsigned int GetAvailableId();
- HMENU SetActiveMeasureMenu(HMENU menu);
- HMENU GetActiveMeasureMenu();
- protected:
- LRESULT AttachHook(int nCode, WPARAM wParam, LPARAM lParam);
- LRESULT ValidationHook(int nCode, WPARAM wParam, LPARAM lParam);
- protected:
- friend static LRESULT CALLBACK SkinnedMenuThreadInfo_AttachHookCb(int nCode, WPARAM wParam, LPARAM lParam);
- friend static LRESULT CALLBACK SkinnedMenuThreadInfo_ValidationHookCb(int nCode, WPARAM wParam, LPARAM lParam);
- protected:
- size_t ref;
- HHOOK attachHook;
- SkinnedMenu *attachMenu;
- HHOOK validationHook;
- SkinnedMenuWnd *validationWindow;
- khash_t(intptr_map) *windowMap;
- khash_t(int_set) *claimedIdSet;
- unsigned int lastAssignedId;
- HMENU activeMeasureMenu;
- };
- #endif //NULLOSFT_MEDIALIBRARY_SKINNED_MENU_THREAD_INFO_HEADER
|