1、显示checkbox
      LVS_EX_CHECKBOXES
      SetExtendedStyle(GetExtendedStyle()|LVS_EX_CHECKBOXES);
2、允许非第一列显示图片。
      LVS_EX_SUBITEMIMAGES
      SetExtendedStyle(GetExtendedStyle()|LVS_EX_SUBITEMIMAGES);
3、禁止拖动列宽。重载OnNotify,代码如下。
      BOOL CExternListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: Add your specialized code here and/or call the base class
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
if((pHDN->hdr.code==HDN_BEGINTRACKW||pHDN->hdr.code==HDN_BEGINTRACKA))// &&((pHDN->iItem==2)||(pHDN->iItem==3))
{
  *pResult=TRUE;
  return TRUE;
}
return CListCtrl::OnNotify(wParam, lParam, pResult);
}

4、解决首次单击不能触发click事件的方法,派生右键down事件处理函数,代码如下:
void CExternListCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetFocus();
CListCtrl::OnLButtonDown(nFlags, point);
}
5、处理图片单击事件,判断区域,处理单击。代码如下。
void CYourDlg::OnNMClickList(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
    POINT point;
UINT uFlags;
GetCursorPos(&point);
m_ls.ScreenToClient(&point);
int nItem = m_lst.HitTest(point, &uFlags);
if(nItem >= 0)
{
  CRect rc;
  m_lst.GetSubItemRect(nItem,3,LVIR_BOUNDS,rc);
  if(PtInRect(&rc,point))
  {
   MessageBox(L"...OnNMClickList");
  }
}
*pResult = 0;
}

6、改变列显示顺序。
int nArQ[] = { 1,2,0,3};
m_lst.GetHeaderCtrl()->SetOrderArray(4,nArQ);

7、让ListCtrl可以编辑
m_lst.ModifyStyle(0,LVS_EDITLABELS);

8、让ListCtrl可以选中一行
m_lst.SetExtendedStyle(m_lst.GetExtendedStyle()|LVS_EX_FULLROWSELECT);

9、

函数名称:CCommonFuntions::OnCListCtrlUp
描    述: 对CListCtrl记录的上移操作
输入参数:
        *listCtrl   对某个CListCtrl对象进行上移操作的CListCtrl指针
        nColumn     CListCtrl对象列数目(不大于30列)

输出参数: 无
返    回: 无
**************************************************************************/
void CCommonFuntions::OnCListCtrlUp(CListCtrl *listCtrl, int nColumn)
{
    listCtrl->SetFocus();
    POSITION pos;
    pos = listCtrl->GetFirstSelectedItemPosition();

// 得到项目索引
    int index = listCtrl->GetNextSelectedItem(pos); 
    if (index == -1)
        return;

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

// 提取所选列表项各列类容

CString tempField[30];
    for (int i=1; i<=nColumn; i++)
    {
        tempField[i] = listCtrl->GetItemText(index, i-1);
    }

// 删除所选列表项
    listCtrl->DeleteItem(index);

// 在IndexInFieldList-1位置处插入上面所删列表项的各列类容
    int tempItem;

tempItem = listCtrl->InsertItem(index-1,tempField[1]);
    for (int j=1; j<nColumn; j++)
    {
        listCtrl->SetItemText(tempItem, j,tempField[j+1]);
    }

index--;

// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点

UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
    listCtrl->SetItemState(index, flag, flag);

一个 LISTCTRL 有7行 GetItemCount(); 返回 为7
    7行,索引对应是0.1.2.3.4.5.6
    GetItemCount()-2 =5; 对应索引为5的行。

转载于:https://www.cnblogs.com/falla/archive/2010/02/04/1663776.html

MFC 问题集(4)CListCtrl相关推荐

  1. MFC 列表控件CListCtrl加载类似QQ界面的头像与文字

    本文主要讲述使用VS2012 MFC的CListCtrl(列表)控件加载类似于QQ界面的图片与文字数据.主要通过CListCtrl::InsertColumn.InsertItem.SetItemTe ...

  2. CListCtrl行高问题最终解决方法

    原文链接: http://blog.csdn.net/benny5609/article/details/1967078 解决方案: 1. 设置List Control的属性 Owen Draw Fi ...

  3. clistctrl获取列高 mfc_MFC控件之CListCtrl的应用实例教程

    本文以实例形式较为详细的讲述了MFC控件中CListCtrl的应用方法,对于学习Windows程序设计来说有不错的借鉴价值.具体步骤如下: 首先,CMFCListCtrl实现的功能中比较特别的就是通过 ...

  4. 感谢十二年的陪伴——分享回归,不忘初心(Eastmount博客总结及未来规划)

    曾记否,2021年4月28日,为了更好地从事科研和学习,当时给所有读者群发了我在CSDN唯一的私信,感谢大家十年的陪伴,短暂消失,不负青春.当时也收到了很多博友的鼓励与祝福,感恩. 是啊!很难想象读博 ...

  5. Jiangsheng的CSDN Digest(March 4, 2006)

    为了便于搜索,这里尽可能保留了论坛上讨论的原文,但是这并不表示本人赞同帖子中的表述方式和观点. CSDN 讨论总结系列: Jiangsheng的CSDN Digest (Jan 21 2006)( h ...

  6. C++学习 2019-1-20

    1.继续完成Clean项目 1.1 我们给第三个标签 "设置目录" 添加一个新的对话框 1.新建一个对话框,给对话框添加树形控件 Tree Control .选择控件 Combo- ...

  7. VS2010 MFC中 单独添加ODBC数据库记录集类(CRecordset)方法

    基于VS2010 MFC的项目是之前建好的,后来需要添加数据库. 方法分享于此. 1.  打开自己的项目,项目->添加类. 2. 选MFC ODBC使用者,点右下角的添加. 3. 点数据源. / ...

  8. C/C++:Windows编程—MFC基于CWnd自绘CListCtrl控件且带滚动条

    文章目录 前言 效果图 代码思路 滚动条思路 完整代码 前言 由于工作需要,需要自绘类似CListCtrl那种控件 而且每项能带类似按钮的点击事件.所以笔者去进行研究,费了点时间写了个简单的自绘窗口 ...

  9. Visual studio C++ MFC之列表控件CListCtrl Control

    背景 本篇旨在MSDN帮助文档下总结列表控件CListCtrl Control的使用,并列出碰到的具体问题. 正文 列表型控件List Control的类是ClistCtrl,具体成员对象详见链接,以 ...

最新文章

  1. 高斯混合模型理解汇总
  2. NASA发现超级地球,真的适宜居住?
  3. weather_在Weather App中使用Android Location API –搜索城市
  4. Visual Studio Code 打开程序文件中文乱码解决方法
  5. 【深度学习】2个经典的练手CNN源码与MNIST数据集测试结果
  6. IDEA添加模块时,插件报错:java.util.NoSuchElementException Collection is empty
  7. maven的java工程取mysql数据库数据
  8. MySQL Internals Manual
  9. ndnsim r语言 ubuntu_Ubuntu14.04下配置ndnSIM-nom-rapid-car2car
  10. 视频教程-R语言入门基础-大数据
  11. linux的源码安装步骤(以安装nginx为例)
  12. keil中下载程序的擦除功能
  13. 1128: mxh道歉记
  14. dropbox 怎么使用_如何在一台PC上使用多个Dropbox帐户
  15. Ubuntu18.04 + 树莓派4B + wifi + 换源 +ssh + 防火墙相关 + mate桌面 + + vnc + ROS Melodic
  16. 结合电商项目谈设计模式
  17. (151)设计一个同或门之Xnorgate
  18. java期末考试卷及答案_java期末考试试卷及答案1
  19. 3.17√ 识别次读入的一个以@为结束符的字符序列是否为形如”序列1序列2“模式的字符序列 ,序列12均没有,且序列2为序列1的逆序列
  20. 三菱FX系列PLC电池电压低导致程序参数丢失,PROG.E报警灯闪烁的解决办法

热门文章

  1. Android动画开发——Animation动画效果
  2. 让系统尽量不用swap
  3. python 数据分析班_Python数据分析班
  4. 票根不符合目标服务_谷歌优化怎么收费?教你选择高性价比的SEO服务!
  5. java 更新对象_java通过key-list和对应value更新当前对象
  6. 文本处理工具 awk-- 报告生成器
  7. P1803 凌乱的yyy / 线段覆盖
  8. linux系统默认的环境变量path,Linux编程 12 (默认shell环境变量, PATH变量重要讲解)...
  9. java 管理对象是什么_Java工程师(16)对象的管理
  10. 最佳实践丨构建云上私有池(虚拟IDC)的5种方案详解