CTreeCtrl标签的编辑
如果树形控件含有TVS_EDITLABELS样式,用户就可以直接编辑这个控件的项标签。用户可以通过点击项标签开始进行编辑,而程序通过使用EditLabel()成员函数开始进行编辑。当开始编辑、取消或完成时,树形控件就会发送一个通知消息。当编辑完成时,你需要响应更新项标签。
当标签编辑开始时,树形控件会发送一个TVN_BEGINLABELEDIT通知消息。通过处理这个消息,你可以允许一些标签可编辑并防止其他标签可编辑。允许编辑返回0,阻止编辑返回非0。
当标签编辑被取消或完成时,树形控件会发送一个TVN_ENDLABELEDIT通知消息。lParam参数是一个指向NMTVDISPINFO结构的地址。item成员是一个TVITEM结构,这个标签确定了标签并包括了可编辑的文本。如果验证编辑过的字符串合适,你需要响应项标签的更新。如果编辑取消,TV_ITEM的pszText成员为0。
在标签编辑期间,需要响应TVN_BEGINLABELEDIT通知消息,你可以通过GetEditControl成员函数获得一个指向用于标签编辑的编辑控件的指针。你可以调用编辑控件的SetLimitText成员函数来限制用户输入的标签文本数或者这个编辑控件子类截取和丢弃无效字符。注意,无论怎样,只有TVN_BEGINLABELEDIT消息被发送后,编辑控件才能显示出来。