MFC列表控件CListCtrl使用方法示范

CListCtrl 获取选中的某一行

POSITION ps = m_list.GetFirstSelectedItemPosition();
int nSel = m_list.GetNextSelectedItem(ps);//选中的哪行的索引(based 0)

// 或
if(m_list.GetSelectedCount() <1)
 return;
int nSel = m_list.GetSelectionMark();

CListCtrl控件失去焦点时仍保持高亮

1. 头文件中添加变量m_nSelItem

int m_nSelItem;

2. 为ListCtrl控件添加NM_KILLFOCUS(失去焦点)和NM_SETFOCUS(得到焦点)消息

手动添加代码如下:

头文件中添加声明

afx_msg void OnNMKillfocusList(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMSetfocusList(NMHDR *pNMHDR, LRESULT *pResult);

源文件中添加映射

ON_NOTIFY(NM_KILLFOCUS, IDC_LISTCTRL, OnNMKillfocusList)
ON_NOTIFY(NM_SETFOCUS, IDC_LISTCTRL, OnNMSetfocusList)

源文件中添加函数

void CPageListView::OnNMKillfocusList(NMHDR *pNMHDR, LRESULT *pResult)
{
  // TODO: 在此添加控件通知处理程序代码
  m_nSelItem = m_ListCtrl.GetSelectionMark();
  m_ListCtrl.SetItemState(m_nSelItem, LVIS_DROPHILITED, LVIS_DROPHILITED);

  *pResult = 0;
}

void CPageListView::OnNMSetfocusList(NMHDR *pNMHDR, LRESULT *pResult)
{
  // TODO: 在此添加控件通知处理程序代码
  m_ListCtrl.SetItemState(m_nSelItem, FALSE, LVIF_STATE);

  *pResult = 0;
}

注意:Always Show Selection属性一定要设为FALSE

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • MFC控件之CListCtrl的应用实例教程

    本文以实例形式较为详细的讲述了MFC控件中CListCtrl的应用方法,对于学习Windows程序设计来说有不错的借鉴价值.具体步骤如下: 首先,CMFCListCtrl实现的功能中比较特别的就是通过CImage来扩展每行的高度.实例化代码如下: CMFCListCtrl m_lisTestResult; 1.插入列(创建表格): m_lisTestResult.InsertColumn(0, _T("序号"), LVCFMT_CENTER, 50); 2.填充内容: m_lisTes

  • MFC实现对话框编辑控件上拖拽文件

    本文实例为大家分享了MFC实现对话框编辑控件上拖拽文件的具体代码,供大家参考,具体内容如下 步骤 1.重载CEdit类 2.添加编辑框控件 首先,重载CEdit类,定义一个派生类CDragEdit类,并重载它的WM_CREATE方法,在其中添加DragAcceptFile(TRUE); 方法. // CDragEdit.h #pragma once class CDragEdit : public CEdit { DECLARE_DYNAMIC(CDragEdit) public: CDragE

  • C++ 关于MFC List Control 控件的总结

    1\在开发项目时,使用到了 listcontrol 控件,就一些问题,做一下备注,以备以后使用 (1)  给list项目 删除所有的项目  DeleteAllItems(); (2) 给list项目 添加一个列 .InsertColumn(0, _T("编号")); (3)给list a项目 设置列的宽度 .SetColumnWidth(0, 50); (4) 在添加项目之前 可以使用 .SetRedraw(false); 来禁止 重画,这样可以提高效率.当添加完成后,可以 使用 .S

  • 浅谈MFC 改变控件大小和位置

    用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置. void MoveWindow(int x,int y,int nWidth,int nHeight); void MoveWindow(LPCRECT lpRect); 第一种用法需给出控件新的坐标和宽度.高度: 第二种用法给出存放位置的CRect对象: 例: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号

  • MFC中动态创建控件以及事件响应实现方法

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示. 静态控件不需要调用Create()

  • C++中MFC Tab Control控件的使用详解

    1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变量, 变量名为m_tab. 类型为CTabCtrl. 3. 在对话框的初始化函数OnInitDialog

  • VS2010/MFC编程(常用控件:树形控件Tree Control控件创建h和实例)

    前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件的创建.CTreeCtrl类的主要成员函数和应用实例. 树形控件的创建 MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作. 树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree Control控件创建,另一种就是通过CTreeCtrl类的Create成员函数创建.下面主要讲后者. CTreeCtrl类的Create成员函数的原型如下: virtual

  • MFC之ComboBox控件用法实例教程

    本文以实例形式较为详细的讲述了MFC中ComboBox控件的用法.分享给大家供大家参考之用.具体方法如下: 一.ComboBox简介: ComboBox控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本. 从工具栏中拖一个Combo Box控件.右击添加变量,变量名为cbBox. 二.用法: 1.为控件添加选项,指定默认选项 cbBox.AddString(_T("one")); cbBox.AddString(

  • MFC列表控件CListCtrl使用方法示范

    CListCtrl 获取选中的某一行 POSITION ps = m_list.GetFirstSelectedItemPosition(); int nSel = m_list.GetNextSelectedItem(ps);//选中的哪行的索引(based 0) // 或 if(m_list.GetSelectedCount() <1) return; int nSel = m_list.GetSelectionMark(); CListCtrl控件失去焦点时仍保持高亮 1. 头文件中添加变

  • ASP.NET中CheckBoxList复选框列表控件详细使用方法

    可以使用两种类型的 ASP.NET 控件将复选框添加到 Web 窗体页上:单独的 CheckBox 控件或 CheckBoxList 控件.两种控件都为用户提供了一种输入布尔型数据(真或假.是或否)的方法. 本文主要介绍CheckBoxList,不言而喻,看到List就知道是一个列表(集合),一个控件可以包含多个CheckBox,下面让我们来看看具体的用法. 1.绑定数据 复制代码 代码如下: this.lngCatalogID.DataSource = dt; //这里我绑到DataTable

  • android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)

    Android开发经常要对列表的滚动位置进行保存和恢复,网上也有很多关于此功能的方法文章,但绝大多数都只能保存恢复到某一行,对于滚动到半行的情况不能精确的恢复.也有很多文章介绍了好几种方法,也说某些方法能够精确的控制,但实际上根本不能实现.还有些介绍了很多玄乎且非常复杂的方法,但也没看到能完整实现的代码. 经过一段时间的研究测试,下面的代码可以完美的实现列表滚动位置的精确保存和恢复,而且只是在原来记忆到行位置的基础上增加了2行代码而已. 具体见下面代码和注释: //保存位置: int posit

  • Python tkinter 树形列表控件(Treeview)的使用方法

    1.方法 方法 描述 bbox(item, column=None) 返回指定item的框选范围,或者单元格的框选范围 column( cid, option=None, **kw) 设置或者查询某一列的属性 delete(*items) 删除指定行或者节点(含子节点) vdetach(*items) 与delete类似,不过不是真正删除,而是隐藏了相关内容.可以用move方法重新显示v exists(item) 判断指定的item是否存在 focus(item=None) 获得选定item的i

  • asp.net基础学习之控件的使用方法

    本文为大家分享了asp.net控件的使用方法,供大家参考,具体内容如下 1.asp.net页面插入c#代码 事先声明: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 引入格式: <% %> 变量可以:<%=val %> <body> &

  • WPF实现带全选复选框的列表控件

    本文将说明如何创建一个带全选复选框的列表控件.其效果如下图: 这个控件是由一个复选框(CheckBox)与一个 ListView 组合而成.它的操作逻辑: 当选中"全选"时,列表中所有的项目都会被选中:反之,取消选中"全选"时,所有项都会被取消勾选. 在列表中选中部分数据项目时,"全选"框会呈现不确定状态(Indetermine). 由此看出,"全选"复选框与列表项中的复选框达到了双向控制的效果. 其设计思路:首先,创建自定义

  • Android ExpandableListView展开列表控件使用实例

    你是否觉得手机QQ上的好友列表那个控件非常棒? 不是..... 那也没关系,学多一点知识对自己也有益无害. 那么我们就开始吧. 展开型列表控件, 原名ExpandableListView 是普通的列表控件进阶版, 可以自由的把列表进行收缩, 非常的方便兼好看. 首先看看我完成的截图, 虽然界面不漂亮, 但大家可以自己去修改界面. 该控件需要一个主界面XML 一个标题界面XML及一个列表内容界面XML 首先我们来看看 mian.xml 主界面 复制代码 代码如下: //该界面非常简单, 只要一个E

  • Android编程之控件ListView使用方法

    本文实例讲述了Android编程之控件ListView使用方法.分享给大家供大家参考.具体分析如下: 控件ListView是一个重要的控件,可以被用作用户列表等显示,下面进行它的操作测试. 下面代码实现了生成了一个ListView显示,并对每个条目的单击事件作出响应. 源代码: package com.list; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import an

  • Easyui在treegrid添加控件的实现方法

     easyui 树加控件 最近看了一个easy感觉里面的树搞得还不错,虽然觉得让人有点不灵活的感觉,我们来说说怎么在树种添加控件效果 在书中添加需要用到formatter这个属性,可以在加载的时候显示 function formatProgress(value){ //console.log(value); if (value){ var box = value.split(","); //console.log(box); var boxid = box[1]; var s; //a

  • Android ListView列表控件的介绍和性能优化

    ListView列表控件 一.ListView显示数据的原理:mvc模式 m:mode 数据(用javabean规范封装) v:view ListView c:adapter 适配器,负责把数据展示到ListView上 二.ListView最常用适配器 BaseAdapter.SimpleAdapter.ArrayAdapter 三.ListView显示数据的步骤 1.创建ListView 2.自定义ListView的适配器继承BaseAdapter,重写baseAdapter的getCount

随机推荐