xj qian
2024-06-25 47d903f3ed61cd1abc33c723a30fe53c829f9c07
jrj/xframe/xcontrol/xcheckbox.hpp
@@ -3,144 +3,37 @@
#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)
    static int SetCheck(HWND wid)
    {
        int BM_SETCHECK = 0x00F1;
        int BST_CHECKED = 0x1;
        SendMessage(wid, BM_SETCHECK, BST_CHECKED, 0);
        return 1;
    }
    static int SetUnCheck(int wid)
    static int SetUnCheck(HWND wid)
    {
        int BM_SETCHECK = 0x00F1;
        int BST_UNCHECKED = 0x0;
        win32::SendMessage(wid, BM_SETCHECK, BST_UNCHECKED, 0);
        SendMessage(wid, BM_SETCHECK, BST_UNCHECKED, 0);
        return 1;
    }
    static int SetText(int wid, string txt)
    static int SetText(HWND wid, string txt)
    {
        int WM_SETTEXT = 0x000C;
        win32::SendMessage(wid, WM_SETTEXT, 0, txt);
        SendMessage(wid, WM_SETTEXT, 0, (LPARAM)txt);
        return 1;
    }
    static int GetCheck(int wid)
    static int GetCheck(HWND wid)
    {
        int BM_GETCHECK = 0x00F0;
        int BM_GETSTATE = 0x00F2;
        int r = win32::SendMessage(wid, BM_GETSTATE, 0, 0);
        int r = SendMessage(wid, BM_GETSTATE, 0, 0);
        if (r == 8 || r == 0 || r == 520) return -1;
        else return 1;
    }
@@ -160,10 +53,10 @@
        return 1;
    }
    int SetText(, string txt)
    int SetText(string txt)
    {
        int WM_SETTEXT = 0x000C;
        SendMessage(GetHWND(), WM_SETTEXT, 0, txt);
        SendMessage(GetHWND(), WM_SETTEXT, 0, (LPARAM)txt);
        return 1;
    }
    int GetCheck()