74 lines
1.8 KiB
C
74 lines
1.8 KiB
C
|
#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
|