热情软件屋

 

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


编号:QA000943
建立日期: 1999年5月6日 最后修改日期:1999年5月6日
所属类别:

孟涛:
    我正在VC++ 4.0下用Windows SDK 开发软件,需要这样的效果:
    
    我用VC++提供的TreeView 控件完成,但是发现这个控件只能单选(每次只能选择一个Item)。请问有什么方法可以用单击鼠标左键实现TreeView多选?

回答:

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

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, Windows 9x控件, listview, treeview, monthview, progress bar

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio