List Control控件

显示方式

属性【View】选择成【Report】。

添加成员变量

绑定变量:m_listCtrl

设置值

// 表头添加
m_listCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT);
m_listCtrl.InsertColumn( 0, _T("网站来源"),LVCFMT_LEFT,85);
m_listCtrl.InsertColumn( 1, _T("产品"),LVCFMT_LEFT,110);
m_listCtrl.InsertColumn( 2, _T("价格"),LVCFMT_LEFT,80); // 插入值
int iLine = m_listCtrl.GetItemCount(); // 列表的里面的条目数量, 横着的行
m_listCtrl.InsertItem( iLine,_T("SOHU")); // 第一行第一列
m_listCtrl.SetItemText( iLine, 1,_T("IPHONE") ); // 第一行第二列
m_listCtrl.SetItemText( iLine, 2,_T("5000") ); // 第一行第三列 // 最末行添加数据
iLine = m_listCtrl.GetItemCount();
m_listCtrl.InsertItem( iLine,_T("TAOBAO")); // 第二行第一列
m_listCtrl.SetItemText( iLine, 1,_T("奔驰") ); // 第二行第二列
m_listCtrl.SetItemText( iLine, 2,_T("500000") ); // 第二行第三列 iLine = m_listCtrl.GetItemCount();
m_listCtrl.InsertItem( iLine,_T("GOOGLE")); // 第三行第一列
m_listCtrl.SetItemText( iLine, 1,_T("宝马") ); // 第三行第二列
m_listCtrl.SetItemText( iLine, 2,_T("600000") ); // 第三行第三列

清空所有值

//清空列表记录
while(m_listCtrl.DeleteItem(0));

刷新功能

  • 删除所有值
  • 初始化所有值

菜单消息处理

NM_CLICK 左键处理

void CmyfirstmfcDlg::OnNMClickListInfo(NMHDR *pNMHDR, LRESULT *pResult)
{
int istat=m_listCtrl.GetSelectionMark(); //用istat存放当前选定的是第几项
CString szSite = m_listCtrl.GetItemText(istat,0); //获取当前项中的数据,0代表是第0列
CString szProduct = m_listCtrl.GetItemText(istat,1); // 第一列
CString szValue = m_listCtrl.GetItemText(istat,2); // 第二列
UINT iValue = _ttol(m_listCtrl.GetItemText(istat,2)); MessageBox(szSite,szProduct+szValue,MB_OK); *pResult = 0;
}

NM_RCLICK 右键处理

IDR_MENU_TOPICR 是插入的菜单选项,菜单项是【购买】、【删除】

void CmyfirstmfcDlg::OnNMRClickListInfo(NMHDR *pNMHDR, LRESULT *pResult)
{
// m_istat、m_szSite、m_szSite、m_szProduct、m_szValue、m_iValue是类中的数据成员,传递数据用
m_istat=m_listCtrl.GetSelectionMark(); //用istat存放当前选定的是第几项
m_szSite = m_listCtrl.GetItemText(m_istat,0);//获取当前项中的数据,0代表是第0列
m_szProduct = m_listCtrl.GetItemText(m_istat,1);
m_szValue = m_listCtrl.GetItemText(m_istat,2);
m_iValue = _ttol(m_listCtrl.GetItemText(m_istat,2)); POINT point;
HMENU hMenu, hSubMenu;
GetCursorPos(&point); //鼠标位置
hMenu = LoadMenu(NULL,
MAKEINTRESOURCE(IDR_MENU_TOPICR)); // 加载菜单
hSubMenu = GetSubMenu(hMenu, 0); //得到子菜单(因为弹出式菜单是子菜单) SetMenuDefaultItem(hSubMenu, -1, FALSE);//设置缺省菜单项,-1为无缺省项
SetForegroundWindow(); // 激活窗口并置前 TrackPopupMenu(hSubMenu, 0,
point.x, point.y, 0, m_hWnd, NULL);
*pResult = 0;
}

排序

类.h文件中定义两个静态变量

static DWORD m_SortColum;
static BOOL m_bAs;

myfirstmfcDlg.cpp初始化

DWORD CmyfirstmfcDlg::m_SortColum = 0;
BOOL CmyfirstmfcDlg::m_bAs = TRUE;

类.h文件中声明回调函数

static int CALLBACK MyListCompar(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);

代码实现部分

int   CALLBACK CmyfirstmfcDlg::MyListCompar(LPARAM   lParam1,   LPARAM   lParam2,   LPARAM   lParamSort)
{
//通过传递的参数来得到CSortList对象指针,从而得到排序方式
CListCtrl* pListCtrl = (CListCtrl*) lParamSort; //通过ItemData来确定数据 int iCompRes;
CString szComp1 = pListCtrl->GetItemText(lParam1,m_SortColum);
CString szComp2 = pListCtrl->GetItemText(lParam2,m_SortColum); switch (m_SortColum)
{
// 这里是要修改的部分,要根据有整数的列进行排序。2是代表第三列为整数
case(2): {
//以第一列为根据排序 编号
//_ttol
iCompRes = _ttol(szComp1) <= _ttol(szComp2) ? -1 : 1;
break;
}
default:
iCompRes=szComp1.Compare(szComp2);
break;
}
//根据当前的排序方式进行调整 if(m_bAs)
return iCompRes;
else
return -iCompRes;
}

添加消息LVN_COLUMNCLICK(单击某一列触发),实现代码如下:


void CMFC03CListCtrlDlg::OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
m_SortColum = pNMListView->iSubItem;
m_bAs = !m_bAs;//升序还是降序 int count = m_listCtrl.GetItemCount(); //行数
for (int i = 0; i < count; i++)
{
m_listCtrl.SetItemData(i, i);
}
m_listCtrl.SortItems(MyListCompar, (LPARAM)&m_listCtrl);
*pResult = 0;
}

List Control控件的更多相关文章

  1. MFC编程 | tab control控件的使用

    因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // tab control控件的使用 // 建立一个Cluster窗口,通过tab可以切换成C-Means和Fuzzy C- ...

  2. OpenCV 2.2版本号以上显示图片到 MFC 的 Picture Control 控件中

    OpenCV 2.2 以及后面的版本号取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序猿无法调用里面的显示函数来将图片显示到 MFC 的 Picture Co ...

  3. 在VC++中使用Tab Control控件

    系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:在模态或非模态对话框中使用Tab Control控件,及引申在单/多文档中使用 查阅MSDN文档,对于创建T ...

  4. OpenCV 通过 MFC 的 Picture Control 控件操作图像

    假设希望对显示在MFC Picture Control 控件里的图像进行操作,比方画线画点之类的,能够利用 OpenCV 结合 MFC 本身的鼠标响应函数来实现. 怎样将图像显示到 Picture C ...

  5. list control控件的一些操作

    一.添加数据 这里介绍的是最平常的添加方法,当然也有很多其他比较好的方法.这里要非常注意添加顺序.先上代码: //导入excel文档中的内容到list中 CoInitialize(NULL); if ...

  6. ASP.NET MVC 枚举类型转LIST CONTROL控件

    在实际应用中,我们经常会用到下拉框.多选.单选等类似的控件,我们可以统称他们为List Control,他们可以说都是一种类型的控件,相同之处都是由一个或一组键值对的形式的数据进行绑定渲染而成的. 这 ...

  7. CEdit使用(Edit Control控件)

    CEdit使用(Edit Control控件) 编辑框只读 属性 Read Only等于 True,就有了只读效果 密码框 属性 Password 等于 True,就有了密码效果 获取值/赋予值 Up ...

  8. C++ 关于MFC List Control 控件的使用事项 原创

    1\在开发项目时,使用到了 listcontrol 控件,就一些问题,做一下备注,以备以后使用 (1)  给list项目 删除所有的项目  DeleteAllItems(); (2) 给list项目 ...

  9. C++ MFC Tab Control控件的详细使用

    1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置I ...

随机推荐

  1. python构建bp神经网络_曲线拟合(一个隐藏层)__2.代码实现

    IDE:jupyter 抽象程度可能不是那么高,以后再优化. 理论和代码实现的差距还是挺大的 数据集请查看 python构建bp神经网络(一个隐藏层)__1.数据可视化 部分代码预览 git上传.ip ...

  2. 自学Aruba1.3-WLAN厂家魔力象限

    点击返回:自学Aruba之路 自学Aruba1.3-WLAN厂家魔力象限 以下为2017<有线和无线局域网接入基础设施的魔力象限>报告:      Aruba.cisco为无线领域领导者. ...

  3. Redis中的简单动态字符串

    Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SD ...

  4. C++ 中的导致编译错误汇总

    多少年来,各路英雄好汉,八方神犇大佬,在CE中饮恨退役. OI的CE,还是那样熟悉的味道. (博主只能想到这么多,欢迎大家来补充) 1.变量名和内置函数冲突?!?! C++内置函数很多很多,许多你不知 ...

  5. Zookeeper3.4.10 + ActiveMQ-5.15.0 集群搭建

    网上的教程真的是凤毛麟角,就不想说啥了,一次一次把我带入坑. 好了关于Zookeeper的搭建已经说好了,本文说说基于Zookeeper的MQ集群. 第一步.将mq安装包上传到CentOS7,并解压 ...

  6. HDU5367 思维map // 动态线段树

    地主毛毛有n座山,这些山在地主家门前排成一条直线.这些山一开始均有相同的高度.  每一天,毛毛都会要求花花开挖机把几座山挖掉一定高度,或者给一些山堆上一些高度.并且要求花花报告现在有多少座山属于“高山 ...

  7. Hive记录-配置远程连接(JAVA/beeline)

    1.修改配置hive-site.xml    hadoop core-site.xml限制---参考Hive记录-部署Hive环境 2.启动hadoop #sh /usr/app/hadoop/sbi ...

  8. 矩阵乘法np.dot()及np.multipy()区别

    1. 线性代数中矩阵乘法: np.dot() import numpy as np ​ # 2 x 3 matrix1 = np.array([[1, 2, 3], [4, 5, 6]]) ​ # 3 ...

  9. outlook关闭时最小化工具

    outlook本身不能支持设置点击关闭按钮时最小化,而是直接退出.需要借助一个加载项实现: Keep Outlook Running. Keep Outlook Running主页:https://s ...

  10. iscroll.js 手机上下滑动 加载更多

    html <!DOCTYPE html> <html> <head> <title>下拉上拉刷新页面代码</title> <meta ...