首页 目录页 热情软件屋 问专家

李海文选

问与答(1则) 99年6月

李海

本文发表在99年6月16日
《PC Computing中文版/电子与电脑》6期

如何实现一次选择多个TreeView的项目

孟涛

我正在VC++ 4.0下用Windows SDK 开发软件,需要这样的效果:

我用VC++提供的TreeView 控件完成,但是发现这个控件只能单选(每次只能选择一个Item)。请问有什么方法可以用单击鼠标左键实现TreeView多选?

李海TreeView提供了一些对多选的支持,但是不象ListBox那么容易实现。如果你使用TVM_SELECTITEM来选择TreeView的条目的话,只能选择一个。但你可以利用TVM_SETITEM来修改每个TreeView条目的TVIS_SELECTED属性,它决定每个条目的选种、中状态。TVM_SELECTITEM实际上同时修改LVIS_FOCUSEDTVIS_SELECTED属性。具有LVIS_FOCUSED 属性的条目同时只能有一个,而具有TVIS_SELECTED属性的可以同时有多个。Windows在处理TreeView鼠标点击时,它会清除先前具有焦点的条目的TVIS_SELECTED属性,但不会清除其他项的TVIS_SELECTED属性。为了实现多选功能,你还需要处理WM_LBUTTONDOWN消息,以避免Windows清除当前有输入焦点的条目的TVIS_SELECTED属性。这就是实现多选的基本原理。你可以在http://www.techsoft.no/bendik/找到一个基于MFC的类,它实现了多选的功能,你也可以把它改写成SDK方式。

回到《李海文选》目录

如果您有任何建议,请给我发电子邮件:
版权所有 李海,热情软件屋 1997-2006


WU Banner from WebUnion Chinese Network