• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
可设置单元格颜色的ClistCtrl类
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
可设置单元格颜色的ClistCtrl类
软件发布 可设置单元格颜色的ClistCtrl类
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 编程技术 | VC教程 | 可设置单元格颜色的ClistCtrl类

可设置单元格颜色的ClistCtrl类

 

添加时间: 2006-2-13 8:40:34  作者: VC教程  阅读次数:942   来源: http://d9soft.com

 

 

          本文的示例程序界面如图一所示,移动列表项后的示例如图二所示。


图一
图一


图二
图二

  实现原理
  要实现表项目的上下移动,思路其实很简单。首先,我们要得到用户所选列表项目的索引,这可以通过调用CListCtrl类的两个成员函数GetFirstSelectedItemPosition( )和GetNextSelectedItem( POSITION& pos )来实现。
得到用户所选列表项目的索引后,就好办了,我们可以通过删除项目,再添加项目的方法来达到移动列表项目的目的,假定在List Control中用户选择了第i+1项,由于List Control中项目的索引是从0开始的,那么该项的索引值就是i,先用GetItemText( int nItem, int nSubItem )来得到索引为i的项目的各列文本,然后删除该项,最后在索引为i-1的位置将我们刚才得到的文本作为新项目插进来,那么用户所选列表项就向上移动了一位,如果是在索引为i+1的位置插入新项目,那么用户所选列表项就向下移动了一位。

  实现方法
  新建一个基于对话框的工程,命名为LCDemo,然后在对话框中按照图一所示添加一个List Control和两个Button,设置List Control样式为Report。为List Control关联一个变量m_listCtrl,并通过ClassWizard为List Control和Button添加Click消息的响应函数。
先在OnInitDialog()函数中对控件初始化,就是为List Control添加列,并插入10行列表项目,详细内容请参考附带的源代码,我只想列出主要的代码片断。
为对话框类定义一个整型变量IndexInFieldList,用它来存储项目索引,把下面代码粘贴到CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 函数中。

void CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION pos;
pos = m_listCtrl.GetFirstSelectedItemPosition();

// 得到项目索引
IndexInFieldList = m_listCtrl.GetNextSelectedItem(pos);

*pResult = 0;
}
在向上移动操作按钮的WM_CLICK消息响应函数中写入下面代码。 void CLCDemoDlg::OnButtonUp()
{
m_listCtrl.SetFocus();

if (IndexInFieldList == -1)
return;

// 判断所选项是否位于行首
if (IndexInFieldList == 0)
{
AfxMessageBox("已经位于第一行!");
return;
}

// 提取所选列表项各列类容
CString tempField1, tempField2, tempField3;
tempField1 = m_listCtrl.GetItemText(IndexInFieldList, 0);
tempField2 = m_listCtrl.GetItemText(IndexInFieldList, 1);
tempField3 = m_listCtrl.GetItemText(IndexInFieldList, 2);

// 删除所选列表项
m_listCtrl.DeleteItem(IndexInFieldList);

// 在IndexInFieldList-1位置处插入上面所删列表项的各列类容
int tempItem;
tempItem = m_listCtrl.InsertItem(IndexInFieldList-1, _T(tempField1));
m_listCtrl.SetItemText(tempItem, 1, _T(tempField2));
m_listCtrl.SetItemText(tempItem, 2, _T(tempField3));
IndexInFieldList--;

// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点
UINT flag = LVIS_SELECTED LVIS_FOCUSED;
m_listCtrl.SetItemState(IndexInFieldList, flag, flag);
}
  向下移动操作按钮的响应函数代码与上面的代码类似,请参考本文所附源代码,因为代码有相关中文注释,这里我就不再赘述了。

  运行情况
  具体的运行效果请编译好附带源代码后执行。
  本示例在Visual C++ 6.0 和 Window XP下编译运行通过。

 

 

 

上下文章:

 

上一篇文章: VC控件TreeCtrl与ListCtrl演示 下一篇文章: VxD技术及在实时反病毒中的应用

相关文章:

  • PS巧用“匹配颜色”命令处理照片
  • Photoshop让照片只保留一种颜色
  • 设计带图标和自定义颜色的ListBox
  • Excel2000单元格内容的合并
  • 让文字自动适应单元格大小的设置方法

相关软件:

  • 美人鱼填颜色 绿色版

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • VC++之Button控件
  • VC++之Static Box控件
  • VC++之Edit Box控件
  • VC++之Static Box控件
  • VC++之Edit Box控件
  • VC++之Scroll Bar
  • VC++之Scroll Bar
  • VC++之List Box/Check List Box控...
  • VC++ Combo Box/Combo Box Ex控件
  • VC++ List Ctrl控件

VC教程阅读排行

  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • VC++之Button控件
  • VC++之Tab Ctrl控件
  • VC++之Edit Box控件
  • VC++之Edit Box控件
  • VC遍历整个目录树查找文件
  • 深入编程:控制面板知多少?
  • VC++之Scroll Bar

编程技术阅读总排行

  • VB入门教程之一
  • 第二章 PowerBuilder 入门之创建新...
  • Java连接数据库实例
  • 第一章 什么是PowerBuilder
  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有