blob: 347f37b1959737fffae1c045f226dca0584beae9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#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
|