xj qian
2024-06-25 1e63e2b6046ffcdc8127da028d122fa414c6a0d7
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#pragma once
 
#include "wobject/xcontrol.hpp"
#include "win32/win.hpp"
 
typedef struct _TREEITEM{} *HTREEITEM;
 
#define TVI_ROOT                ((HTREEITEM)(ULONG_PTR)-0x10000)
#define TVI_FIRST               ((HTREEITEM)(ULONG_PTR)-0x0FFFF)
#define TVI_LAST                ((HTREEITEM)(ULONG_PTR)-0x0FFFE)
#define TVI_SORT                ((HTREEITEM)(ULONG_PTR)-0x0FFFD)
 
#define TVIF_TEXT               0x0001
#define TVIF_IMAGE              0x0002
#define TVIF_PARAM              0x0004
#define TVIF_STATE              0x0008
#define TVIF_HANDLE             0x0010
#define TVIF_SELECTEDIMAGE      0x0020
#define TVIF_CHILDREN           0x0040
#define TVIF_INTEGRAL           0x0080
 
#define TVIF_STATEEX            0x0100
#define TVIF_EXPANDEDIMAGE      0x0200
 
#define TVIS_SELECTED           0x0002
#define TVIS_CUT                0x0004
#define TVIS_DROPHILITED        0x0008
#define TVIS_BOLD               0x0010
#define TVIS_EXPANDED           0x0020
#define TVIS_EXPANDEDONCE       0x0040
#define TVIS_EXPANDPARTIAL      0x0080
 
#define TVIS_OVERLAYMASK        0x0F00
#define TVIS_STATEIMAGEMASK     0xF000
#define TVIS_USERMASK           0xF000
 
#define TVGN_ROOT               0x0000
#define TVGN_NEXT               0x0001
#define TVGN_PREVIOUS           0x0002
#define TVGN_PARENT             0x0003
#define TVGN_CHILD              0x0004
#define TVGN_FIRSTVISIBLE       0x0005
#define TVGN_NEXTVISIBLE        0x0006
#define TVGN_PREVIOUSVISIBLE    0x0007
#define TVGN_DROPHILITE         0x0008
#define TVGN_CARET              0x0009
#define TVGN_LASTVISIBLE        0x000A
#define TVGN_NEXTSELECTED       0x000B
 
 #define TV_FIRST 0x1100 
 
struct SCROLLINFO 
{
    int cbSize;
    int fMask;
    int  nMin;
    int  nMax;
    int nPage;
    int  nPos;
    int  nTrackPos;
};
 
struct tvitem 
{
    int mask;
    HTREEITEM hItem;
    int state;
    int stateMask;
    string pszText;
    int cchTextMax;
    int iImage;
    int iSelectedImage;
    int cChildren;
    LPARAM lParam;
};
 
struct tvinsertstruct 
{
    HTREEITEM hParent;
    HTREEITEM hInsertAfter;
    tvitem  item;
};
    
 
struct NMTREEVIEW : public NMHDR
{
    int action;
    tvitem itemOld;
    tvitem itemNew;
    xpoint ptDrag;
};
 
 
struct TVNNMHDR : public NMHDR
{
    HTREEITEM FromItem;
    HTREEITEM ToItem;
    xpoint pt;
    string PopupMenu;
};    
 
struct NMTVDISPINFO : public NMHDR
{
    tvitem     item;
};    
 
struct TVHITTESTINFO {
    xpoint     pt;
    int      flags;
    HTREEITEM hItem;
};
 
class xcheckbox:  public xcontrol
{
public:
    xcheckbox() :xcontrol(nullptr) {}
    xcheckbox(void* implptr) :xcontrol(implptr) {}
 
    static int SetCheck(int wid)
    {
        int BM_SETCHECK = 0x00F1;
        int BST_CHECKED = 0x1;
        SendMessage(wid, BM_SETCHECK, BST_CHECKED, 0);
        return 1;
    }
    static int SetUnCheck(int wid)
    {
        int BM_SETCHECK = 0x00F1;
        int BST_UNCHECKED = 0x0;
        win32::SendMessage(wid, BM_SETCHECK, BST_UNCHECKED, 0);
        return 1;
    }
    static int SetText(int wid, string txt)
    {
        int WM_SETTEXT = 0x000C;
        win32::SendMessage(wid, WM_SETTEXT, 0, txt);
        return 1;
    }
    static int GetCheck(int wid)
    {
        int BM_GETCHECK = 0x00F0;
        int BM_GETSTATE = 0x00F2;
        int r = win32::SendMessage(wid, BM_GETSTATE, 0, 0);
        if (r == 8 || r == 0 || r == 520) return -1;
        else return 1;
    }
 
    int SetCheck()
    {
        int BM_SETCHECK = 0x00F1;
        int BST_CHECKED = 0x1;
        SendMessage(GetHWND(), BM_SETCHECK, BST_CHECKED, 0);
        return 1;
    }
    int SetUnCheck()
    {
        int BM_SETCHECK = 0x00F1;
        int BST_UNCHECKED = 0x0;
        SendMessage(GetHWND(), BM_SETCHECK, BST_UNCHECKED, 0);
        return 1;
    }
 
    int SetText(, string txt)
    {
        int WM_SETTEXT = 0x000C;
        SendMessage(GetHWND(), WM_SETTEXT, 0, txt);
        return 1;
    }
    int GetCheck()
    {
        int BM_GETCHECK = 0x00F0;
        int BM_GETSTATE = 0x00F2;
        int r = SendMessage(GetHWND(), BM_GETSTATE, 0, 0);
        if (r == 8 || r == 0 || r == 520) return -1;
        else return 1;
    }
};