热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MFCListControl用法

在原来博客中有:MFCListControl简单功能使用今天又重新来介绍点新东西:双击击listcontrol 做出响应。主要有1插入数据2得到listctrl 中所有行的

在原来博客中有:MF CListControl 简单功能使用

今天又重新来介绍点新东西:双击击listcontrol  做出响应,当然你可以做的还有很多,比如显示点击的行列,右键点击,后面代码都有,没有截图了

主要有

1 插入数据
2 得到listctrl 中所有行的checkbox 的状态 
3 得到listctrl 中所有选中行的序号 
4 对数据做出双击处理与判断



1插入数据显示(参考后面代码)

,

2双击有数据的区域(参考后面代码)做出响应

,

3 响应成功提示

,


部分参考代码

头文件;

#pragma once
#include "afxcmn.h"
#include "afxwin.h"


// cpagebg 对话框

class cpagebg : public CDialogEx
{
	DECLARE_DYNAMIC(cpagebg)

public:
	cpagebg(CWnd* pParent = NULL);   // 标准构造函数
	virtual ~cpagebg();

// 对话框数据
	enum { IDD = IDD_DIALOGBG };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
public:
	CListCtrl m_BgListCtr;
	void InitBgList(void);
	CEdit m_dzbg1;
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	afx_msg void OnNMRClickList3(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnBnClickedCheck2();
	afx_msg void OnNMDblclkList3(NMHDR *pNMHDR, LRESULT *pResult);
};

cpp文件

// cpagebg.cpp : 实现文件
//

#include "stdafx.h"
#include "103srv.h"
#include "cpagebg.h"
#include "afxdialogex.h"


// cpagebg 对话框

IMPLEMENT_DYNAMIC(cpagebg, CDialogEx)

cpagebg::cpagebg(CWnd* pParent /*=NULL*/)
	: CDialogEx(cpagebg::IDD, pParent)
{

}

cpagebg::~cpagebg()
{
}

void cpagebg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST3, m_BgListCtr);
	DDX_Control(pDX, IDC_EDIT6, m_dzbg1);
}


BEGIN_MESSAGE_MAP(cpagebg, CDialogEx)
	ON_WM_TIMER()
	ON_NOTIFY(NM_RCLICK, IDC_LIST3, &cpagebg::OnNMRClickList3)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST3, &cpagebg::OnNMDblclkList3)
END_MESSAGE_MAP()


// cpagebg 消息处理程序


void cpagebg::InitBgList(void)
{
	DWORD dwStyle = m_BgListCtr.GetExtendedStyle(); 
	dwStyle |= LVS_EX_FULLROWSELECT;// 选中某行使整行高亮(只适用与report 风格的listctrl ) 
	dwStyle |= LVS_EX_GRIDLINES;// 网格线(只适用与report 风格的listctrl ) 
	//dwStyle |= LVS_EX_CHECKBOXES;//item 前生成checkbox 控件 
	m_BgListCtr.SetExtendedStyle(dwStyle); // 设置扩展风格 
	dwStyle |= LVS_EX_FULLROWSELECT;// 选中某行使整行高亮(只适用与report 风格的listctrl )
	//设置列表控件的报表显示方式
	//m_BgListCtr.ModifyStyle(LVS_ICON | LVS_SMALLICON | LVS_LIST, LVS_REPORT);

	//设置列表控件显示网格线
	//m_BgListCtr.SetExtendedStyle(LVS_EX_GRIDLINES);

	//在列表控件中插入列
	m_BgListCtr.InsertColumn(0, _T("序号"), LVCFMT_LEFT, 50);
	m_BgListCtr.InsertColumn(1, _T("报告"), LVCFMT_LEFT, 100);
	m_BgListCtr.InsertColumn(2, _T("时间"), LVCFMT_LEFT, 200);
	m_BgListCtr.InsertColumn(3, _T("时间代码"), LVCFMT_LEFT, 100);
	m_BgListCtr.InsertColumn(4, _T("参数个数"), LVCFMT_LEFT, 100);
	m_BgListCtr.InsertColumn(5, _T("参数值"), LVCFMT_LEFT, 150);
	SetTimer(1, 1000, NULL);
	SetTimer(2, 2000, NULL);
	SetTimer(3, 3000, NULL);
	LONG lStyle; 
	
	/*m_BgListCtr.InsertItem(0, _T("1"));
	m_BgListCtr.InsertItem(1, _T("2"));*/
	//for (int n = 0; n <5; n++)
	//{
	//	CString strColumnHeading = _T("");
	//	//strColumnHeading.Format(_T("Column %d"), n);
	//	m_BgListCtr.InsertColumn(n, strColumnHeading, LVCFMT_LEFT, 100);
	//}

	//在列表控件中插入行
	for (int m = 0; m <3 ;m++ )
	{
		CString strItem = _T("");
		strItem.Format(_T(" %d"), m);
		m_BgListCtr.InsertItem(m, strItem);

		for (int n = 1; n <2; n++)
		{
			CString strText = _T("动作报告");
			//strText.Format(_T("SubItem %d %d"), m, n);
			m_BgListCtr.SetItemText(m, n, strText);
		}
	}
}


void cpagebg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CTime time = CTime::GetCurrentTime();
	CString m_strTime = time.Format("%Y-%m-%d %H:%M:%S");
	//AfxMessageBox(m_strTime);
	AfxSetWindowText(m_dzbg1,m_strTime );
	switch (nIDEvent)
	{
	case 1:
		for (int m= 0; m<1; m++)
		{
			for (int n = 2; n <3; n++)
			{
				m_BgListCtr.SetItemText(m, n, m_strTime);
			}
		}
		break;
	case 2:
		for (int m= 1; m<2; m++)
		{
			for (int n = 2; n <3; n++)
			{
				m_BgListCtr.SetItemText(m, n, m_strTime);
			}
		}
		break;
	case 3:
		for (int m= 2; m<3; m++)
		{
			for (int n = 2; n <3; n++)
			{
				m_BgListCtr.SetItemText(m, n, m_strTime);
			}
		}
		break;
	}
	
	
	CDialogEx::OnTimer(nIDEvent);
}


void cpagebg::OnNMRClickList3(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	//AfxMessageBox(_T("1"));
	/*DWORD dwPos = GetMessagePos(); 
	CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); 
	m_BgListCtr.ScreenToClient(&point); 
	LVHITTESTINFO lvinfo; 
	lvinfo.pt = point; 
	lvinfo.flags = LVHT_ABOVE; 
	int nItem = m_BgListCtr.SubItemHitTest(&lvinfo); 
	if(nItem != -1) 
	{ 
	CString strtemp; 
	strtemp.Format(_T(" 单击的是第%d 行第%d 列"), lvinfo.iItem, lvinfo.iSubItem); 
	AfxMessageBox(strtemp); 
	} */

	DWORD dwPos = GetMessagePos(); 
	CPoint point( LOWORD(dwPos), HIWORD(dwPos) );   
	m_BgListCtr.ScreenToClient(&point); 
	LVHITTESTINFO lvinfo; 
	lvinfo.pt = point; 
	lvinfo.flags = LVHT_ABOVE; 
	UINT nFlag; 
	int nItem = m_BgListCtr.HitTest(point, &nFlag); 
	// 判断是否点在checkbox 上 
	/*if(nFlag == LVHT_ONITEMSTATEICON) 
	{ 
	AfxMessageBox(_T(" 点在listctrl 的checkbox 上")); 
	} */
	*pResult = 0;
}


void cpagebg::OnBnClickedCheck2()
{
	// TODO: 在此添加控件通知处理程序代码
}

//双击事件
void cpagebg::OnNMDblclkList3(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	//AfxMessageBox(_T(" 2222")); 
	// ::MessageBox(NULL,_T("列表为空"),_T("标题"),MB_OK);
	
	DWORD dwPos = GetMessagePos(); 
	CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); 
	m_BgListCtr.ScreenToClient(&point); 
	LVHITTESTINFO lvinfo; 
	lvinfo.pt = point; 
	lvinfo.flags = LVHT_ABOVE; 
	int nItem = m_BgListCtr.SubItemHitTest(&lvinfo); 
	if(nItem != -1)//在有数据的显示点击有效
	{ 
		/*CString strtemp; 
		strtemp.Format(_T(" 单击的是第%d 行第%d 列"), lvinfo.iItem, lvinfo.iSubItem); 
		AfxMessageBox(strtemp); */
		if(::MessageBox(m_hWnd,_T("确定产生报告"),_T("确认?"),MB_OKCANCEL) == IDCANCEL)
		{
			AfxMessageBox(_T(" error"));
		}else
		{
			AfxMessageBox(_T(" sucess"));
		}
	} 
	 
	*pResult = 0;
}


MFC ListControl用法


推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
author-avatar
灰太狼老婆红太狼_715
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有