CSortListCtrl 加强版

飞往天堂的纸鹤

飞往天堂的纸鹤

2016-01-29 12:11

CSortListCtrl 加强版,CSortListCtrl 加强版

CSortListCtrl 加强版

作者:刘良敏

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

下载源代码

  这是一个可以自由选择多个子项的列表控件。由于项目需要,使用了 CSortListCtrl 这个类,从“VC知识库” 网站下载的源码。我的项目中主要用到该类可方便变化 ITEM 颜色的优点。但是我项目中还要求可以通过鼠标拖动来选择多项,注意不是整行整行的选择,而是自由地选择。所以我把自己如何实现用鼠标拖动来选择多项 SubItem 的方法贴出来:主要思路:在 CSortListCtrl 类的 OnMouseMove 消息中处理,先判断鼠标左键是否按下,如果按下(这种状态其实就是鼠标的 Drag 状态),就获取鼠标目前所在的行号和列号,然后设置该行号和列号的颜色不同于一般情况下的颜色,以标识为被选中状态;同时把行号和列号存储起来用于后面的操作。

代码如下:

.h文件中:定义了两个变量用来存储选中的行和列

CUIntArray ITEM; //用于选中行号的集合CUIntArray SUBITEM; //用于选中列号的集合 

.cpp文件中的代码:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)
// TODO: 拖动鼠标消息处理函数 if(nFlags == MK_LBUTTON) { LVHITTESTINFO hitTestInfo; hitTestInfo.pt = point; this->SubItemHitTest(&hitTestInfo); this->SetItemColor(hitTestInfo.iItem,hitTestInfo.iSubItem,RGB(255,255,255),RGB(50,50,50)); for(int i=0;i < ITEM.GetCount();i++) //避免存储重复的SubItem。 { if(hitTestInfo.iItem==ITEM.GetAt(i)&&hitTestInfo.iSubItem==SUBITEM.GetAt(i)) { return; } this->ITEM.Add(hitTestInfo.iItem); //把选中的行号和列号一一对应的存入数组中 this->SUBITEM.Add(hitTestInfo.iSubItem); } }CListCtrl::OnMouseMove(nFlags, point); 
下面两个消息处理函数:“开始拖动”和“单击”是为了解决重新拖动以及单击时清除前一次拖动所做的选择
void CSortListCtrl::OnLvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); // TODO: 开始拖动鼠标消息处理函数 this->SetItemState(pNMLV->iItem,0,LVIS_SELECTED); //取消当前被选中行的选中状态 //清空前一次拖动所做的选择 for(int i=0;i< ITEM.GetCount();i++) { this->SetItemColor(ITEM.GetAt(i),SUBITEM.GetAt(i),RGB(0,0,0),RGB(255,255,255)); ??} this->ITEM.RemoveAll(); this->SUBITEM.RemoveAll(); *pResult = 0; } void CSortListCtrl::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 鼠标单击事件 for(int i=0;iITEM.GetCount();i++) { this->SetItemColor(this->ITEM.GetAt(i),this->SUBITEM.GetAt(i),RGB(0,0,0),RGB(255,255,255)); } this->ITEM.RemoveAll(); this->SUBITEM.RemoveAll(); *pResult = 0; }      
  附加说明:我在这个项目中实现的功能是——对所选项右键单击,弹出快捷菜单,进行各种操作,如同时对所有选中的项进行“加法”、“减法”、“乘法”和“除法”等操作。因为取得了选中的行号和列号,您可以根据自己的需要来实现对所选项的操作。

展开更多 50%)
分享

猜你喜欢

CSortListCtrl 加强版

C语言教程 C语言函数
CSortListCtrl 加强版

VC CSortListCtrl加强版

编程语言 网络编程
VC CSortListCtrl加强版

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

巫师加强版攻略

电脑网络
巫师加强版攻略

边境之门加强版攻略

电脑网络
边境之门加强版攻略

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

果蔬的健康“加强版”

营养价值
果蔬的健康“加强版”

《无双大蛇》攻略宝典加强版

电脑网络
《无双大蛇》攻略宝典加强版

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何使用JSP连接DB2数据库

如何使用JSP连接DB2数据库

Flash AS3.0菜鸟学飞教程:函数之形式参数和实际参数

Flash AS3.0菜鸟学飞教程:函数之形式参数和实际参数
下拉加载更多内容 ↓