DEV Community

海前 王
海前 王

Posted on

tvs

下面是你提供的commctrl.h头文件中的树视图控件(TreeView)相关宏和结构体定义的翻译整理版本。这些定义通常用于设置和操作树视图控件的属性和状态。

树视图控件样式标志
cpp
复制代码
#define TVS_HASBUTTONS          0x0001 // 节点前显示按钮
#define TVS_HASLINES            0x0002 // 节点之间显示连接线
#define TVS_LINESATROOT         0x0004 // 根节点显示连接线
#define TVS_EDITLABELS          0x0008 // 允许编辑节点标签
#define TVS_DISABLEDRAGDROP     0x0010 // 禁用拖放操作
#define TVS_SHOWSELALWAYS       0x0020 // 始终显示选中状态
#define TVS_RTLREADING          0x0040 // 从右到左读取文本

#define TVS_NOTOOLTIPS          0x0080 // 禁用工具提示
#define TVS_CHECKBOXES          0x0100 // 显示复选框
#define TVS_TRACKSELECT         0x0200 // 跟踪选中状态
#define TVS_SINGLEEXPAND        0x0400 // 单一展开节点
#define TVS_INFOTIP             0x0800 // 显示信息提示
#define TVS_FULLROWSELECT       0x1000 // 选择整行
#define TVS_NOSCROLL            0x2000 // 禁用滚动
#define TVS_NONEVENHEIGHT       0x4000 // 禁用不均匀高度
#define TVS_NOHSCROLL           0x8000 // 禁用水平滚动(TVS_NOSCROLL覆盖此选项)

#if (NTDDI_VERSION >= NTDDI_WINXP)
#define TVS_EX_NOSINGLECOLLAPSE     0x0001 // 禁用单一折叠
#endif

#if (NTDDI_VERSION >= NTDDI_VISTA)
#define TVS_EX_MULTISELECT          0x0002 // 支持多重选择
#define TVS_EX_DOUBLEBUFFER         0x0004 // 双缓冲显示
#define TVS_EX_NOINDENTSTATE        0x0008 // 不保留缩进状态
#define TVS_EX_RICHTOOLTIP          0x0010 // 丰富工具提示
#define TVS_EX_AUTOHSCROLL          0x0020 // 自动水平滚动
#define TVS_EX_FADEINOUTEXPANDOS    0x0040 // 展开动画
#define TVS_EX_PARTIALCHECKBOXES    0x0080 // 部分复选框
#define TVS_EX_EXCLUSIONCHECKBOXES  0x0100 // 排他性复选框
#define TVS_EX_DIMMEDCHECKBOXES     0x0200 // 灰暗复选框
#define TVS_EX_DRAWIMAGEASYNC       0x0400 // 异步绘制图像
#endif
树视图项(TVITEM)标志
cpp
复制代码
#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 // 项目是否完整
#if (_WIN32_IE >= 0x0600)
#define TVIF_STATEEX            0x0100 // 扩展状态
#define TVIF_EXPANDEDIMAGE      0x0200 // 展开状态图像
#endif
树视图项状态标志
cpp
复制代码
#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 // 用户定义掩码

#if (_WIN32_IE >= 0x0600)
#define TVIS_EX_FLAT            0x0001 // 扁平化视图
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define TVIS_EX_DISABLED        0x0002 // 禁用项
#endif
#define TVIS_EX_ALL             0x0002 // 所有扩展标志
#endif
NMTVSTATEIMAGECHANGING 结构体
cpp
复制代码
typedef struct tagNMTVSTATEIMAGECHANGING
{
    NMHDR hdr; // 通用消息头
    HTREEITEM hti; // 项目句柄
    int iOldStateImageIndex; // 旧状态图像索引
    int iNewStateImageIndex; // 新状态图像索引
} NMTVSTATEIMAGECHANGING, *LPNMTVSTATEIMAGECHANGING;
特殊常量
cpp
复制代码
#define I_CHILDRENCALLBACK  (-1) // 使用回调函数获取子项
#define I_CHILDRENAUTO      (-2) // 自动获取子项
TVITEM 结构体别名
cpp
复制代码
#define LPTV_ITEMW              LPTVITEMW // 指向 TVITEMW 的指针
#define LPTV_ITEMA              LPTVITEMA // 指向 TVITEMA 的指针
#define TV_ITEMW                TVITEMW   // TVITEMW 结构
#define TV_ITEMA                TVITEMA   // TVITEMA 结构
#define LPTV_ITEM               LPTVITEM  // 指向 TVITEM 的指针
#define TV_ITEM                 TVITEM    // TVITEM 结构
TVITEM 结构体定义
这部分结构体定义在你提供的代码中被截断,完整定义应包括以下内容:

cpp
复制代码
typedef struct tagTVITEMA
{
    UINT mask;               // 控制哪些成员有效
    int iItem;               // 项目索引
    int iImage;              // 图像索引
    int iSelectedImage;      // 选中状态图像索引
    UINT state;              // 项目状态
    UINT stateMask;          // 状态掩码
    LPSTR pszText;           // 指向文本的指针
    int cchTextMax;          // 文本缓冲区最大字符数
    LPARAM lParam;           // 自定义参数
} TVITEMA, *LPTVITEMA;
请根据需要将 TVITEM 和相关结构体根据实际情况进行调整和补充。





Enter fullscreen mode Exit fullscreen mode

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay