#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; } };