Clistctrl多行删除总结

http://blog.csdn.net/vlily/article/details/7739483

备注:第五种方法已经试过,其余没试过,感觉是对的(第二种方法是错误的 )

CListCtrl选中行有两种属性情况,如果设置了Single Selection为TRUE,则只能单选,否则为多选(默认)。

方法一:

int CListCtrl::GetSelectionMark();

返回值:返回选中索引号,否则返回-1

说明:这个函数可以处理单行的情况,但是有一个缺点,它会保留你上次选中的项,所以当你单击空白的地方时,还会返回上次选中的项。因此在使用快捷键实现删除操作时需要注意这个情况,一般可以配合UINT
GetItemState(int nItem,
UINT nMask) const;来判断。

单行:int nItem = m_listCtrl.GetSelectionMark();
m_listCtrl.DeleteItem(nItem);

方法二:
此种方法完全错误!!!!!!!!!!!
说明:这个可以处理单行和多行(连续)的情况

POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
TRACE(_T("No items were selected!\n"));
}
else
{
while (pos)
{
int nItem = m_listCtrl.GetNextSelectedItem(pos);
m_listCtrl.DeleteItem(nItem);
// you could do your own processing on nItem here
}
}

方法三:

说明:可以处理单行和多行的情况,个人一般用这种方法

while(m_listCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED) != -1)
{
int nItem = m_listCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED);
m_listCtrl.DeleteItem(nItem);
}

方法四:

说明:可以处理单行和多行的情况

for(int i = 0; i<m_listCtrl.GetItemCount(); i++)
{
if(m_listCtrl.GetItemState(i, LVNI_ALL | LVNI_SELECTED) == LVIS_SELECTED)
m_listCtrl.DeleteItem(i);
}

方法五:

 POSITION sSelPos = NULL;

 while(sSelPos =m_listctrl.GetFirstSelectedItemPosition())
 {
       int nSelItem = -1;
        nSelItem = m_listctrl.GetNextSelectedItem(sSelPos);

        if(nSelItem >= 0 &&nSelItem<m_listctrl.GetItemCount())
      {

            好了,这个nSelItem 就是我们要的DD

     }

}
时间: 2024-10-10 16:41:02

Clistctrl多行删除总结的相关文章

利用命令行删除Android系统自带应用的方法

一般来说,手机厂家都会在手机中内置许多应用,而这些应用是使用一般的应用程序管理无法删除的.当然,现在有一些APP,如360和豌豆荚,在获取了系统的root权限之后是可以删除自带应用的.但是如果我不想让一个app来获取我的root权限呢?有没有方便.快捷的方法呢? 当然有,那就是利用shell命令.当然,首先要安装当前手机的驱动程序,否则无法进行调试. 在如何删除Android系统中的内置应用一文中作者也介绍了利用命令行删除系统应用的方法,但是个人感觉太麻烦了,其实有更简单的方法,只要三步即可:a

asp.net 行删除原理(浏览器端请求,服务器端响应)

1.asp.net中数据绑定控件中行按钮和行超链接实现方式不同:ListView中Button,HyperLink两种行删除方式,按钮方式是将行的id通过表单提交到服务器:行超链接的方式是通过超链接的url通过get的方式提交给处理页面,超链接的方式由于没有提交所有的表单信息,因此很多服务端控件的高级用法用不了. 2.超链接的因为没有向服务器提交ViewState等隐藏字段,所以处理时IspostBack是false:而按钮提交的表单,所以ispostback是true.可以在超链接的href中

php处理文件,一行一行的读取,并且把没用的行删除。

今天做sitemap.xml.找了个国外的网站,http://www.freesitemapgenerator.com/这个可以生成5000条数据,以前找那个只能生成500条.但是,生成的xml标签中有些是没有用的,如图: 于是想到了php处理文件,一行一行的读取,并且把没用的行删除. 代码如下: <?php  set_time_limit(0); $file=fopen('sitemap.xml','r'); while (!feof($file)){   $line = fgets($fil

VIM中的复制剪切移动多行删除

1.复制 使用yy复制一行 使用 行数n+yy 复制n行 使用p对复制的行进行粘贴 2.剪切 使用dd剪切一行 使用 行数n+dd 剪切n行 使用p对剪切的行进行粘贴 3.移动 Vim用数字+G来移动行,比如你要移动到342行,那就是342G 4.多行删除 首先在命令模式下,输入":set nu"显示行号:通过行号确定你要删除的行:命令输入":32,65d",回车键,32-65行就被删除了

VI中的多行删除与复制

VI中的多行删除与复制 法一: 单行删除,:1(待删除行)d 多行删除 ,:1,10d 法二: 光标所在行,dd 光标所在行以下的N行,Ndd 方法1: 光标放到第6行, 输入:2yy 光标放到第9行, 输入:p 此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面. 方法2: 命令行模式下输入 6,9 co 12 复制第6行到第9行之间的内容到第12行后面. 方法3: 有时候不想费劲看多少行或复制大量行时,可以使用标签来替代 光标移到起始行,输入ma 光标移到结束行

vim常用命令之多行注释和多行删除

vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率. 1.多行注释: 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式; 2. 在行首使用上下键选择需要注释的多行; 3. 按下键盘(大写)“I”键,进入插入模式: 4. 然后输入注释符(“//”.“#”等); 5. 最后按下“Esc”键. 注:在按下esc键后,会稍等一会才会出现注释,不要着急~~时间很短的 2.删除多行注释: 1. 首先按esc进入命令行模式下,按下Ctrl +

VI中的多行删除与复制 转自:http://www.douban.com/note/102505878/

VI中的多行删除与复制  rain_window 2010-11-24 16:19:41 VI中的多行删除与复制法一:单行删除,:1(待删除行)d多行删除 ,:1,10d法二:光标所在行,dd光标所在行以下的N行,Ndd方法1:光标放到第6行,输入:2yy光标放到第9行,输入:p此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面.方法2:命令行模式下输入6,9 co 12复制第6行到第9行之间的内容到第12行后面.方法3:有时候不想费劲看多少行或复制大量行时,可以使

Snail—UI学习之表视图TableView多行删除

这次实现的功能是多行cell进行删除 代码是在上一次的基础上进行修改的 有的代码删除重写 有的方法只是加了一些逻辑判断 // // WJJRootViewController.m // blog_UITableView // // Created by Snail on 15-7-30. // Copyright (c) 2015年 Snail. All rights reserved. // #import "WJJRootViewController.h" @interface W

VI中的多行删除与复制(转)

VI中的多行删除与复制 法一: 单行删除,:1(待删除行)d 多行删除 ,:1,10d 法二: 光标所在行,dd 光标所在行以下的N行,Ndd 方法1: 光标放到第6行, 输入:2yy 光标放到第9行, 输入:p 此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面. 方法2: 命令行模式下输入 6,9 co 12 复制第6行到第9行之间的内容到第12行后面. 方法3: 有时候不想费劲看多少行或复制大量行时,可以使用标签来替代 光标移到起始行,输入ma 光标移到结束行