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

MFC入门学习之控件(4)标签控件ListControl的添加和使用

在MFC中,提供了ListControl类, 首先设置如下参数:显然如果想满足特殊的需求,必须定制适合我们需求的ListControl,此处假设我们需要在l

在MFC中,提供了List Control类,

 

首先设置如下参数:

bubuko.com,布布扣

显然如果想满足特殊的需求,必须定制适合我们需求的List Control,

此处假设我们需要在list中浏览计算机上文件,那么我们可能需要一个button,当点击button时触发浏览文件的操作。这样的操作在List Control中并不存在,那么现在开始在List Control中添加一个按键,那么需要Button类的方法,但是Button类本身不支持在某个特定的List Control中添加,那么也需要对Button类重新封装,满足在特定位置的显示和按照列表的方式进行轮询Button状态。

首先搭建List Control的框架:

CVMC_ListCtrl(CString Text = _T("Some String"));

 

CVMC_ListButton *m_pButton;

CString DefaultText;

int m_pButtonMapColumn;

 

CListm_pButtonList;

 

void CreateButton(int iIndex, int iSubIndex, int iMapColumn =-1);

void UpdateButtonPos();//adjust buttons

void OnPaint();

 

int m_nButtonMapColumn;

int m_nSelectedItem;

从上述的定义可以清晰的了解到整个List Control能够为我们提供的全部功能。

既然用到了CVMC_ListButton类,那么就需要对这个类进行封装。

并且我们真正需要的是将按键添加到按键链表中,通过如下方法:

CList m_pButtonList;

 

m_pButtonList.AddTail(m_pButton);

 

m_pButton->ShowWindow(SW_SHOW);

 

完成button的添加之后,需要添加消息的处理函数,方法为:

利用消息机制,手动添加消息处理函数

BEGIN_MESSAGE_MAP(CVMC_ListCtrl,CListCtrl)

//Add your own message map here

ON_BN_CLICKED(ID_BUTTON_IN_LIST_BROWSE, OnButtonBrowse)

END_MESSAGE_MAP()

 

声明处理函数的方法:

afx_msgvoid OnButtonBrowse();

 

当然在创建完成一个list control控件之后,最重要的是向里面添加显示信息,首先向list control中添加列信息,也就是标题信息。首先要将创建的控件和对象连接起来,

DDX_Control(pDX,IDC_LIST_SINGLE_DOWNLOAD, m_NandSingleFileList);

 

在初始化函数中添加如下信息:

//listcontrol

CRect rect;

m_NandSingleFileList.GetClientRect(&rect);

 

m_NandSingleFileList.SetExtendedStyle(m_NandSingleFileList.GetExtendedStyle()| LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES);

 

lvc.fmt = LVCFMT_CENTER;

lvc.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH |LVCF_SUBITEM;

 

//add column

lvc.pszText = _T("File Name");

lvc.cx = rect.Width()/8;

lvc.iSubItem = -1;

m_NandSingleFileList.InsertColumn(LIST_ITEM_FILE_NAME,&lvc);

 

lvc.pszText = _T("Path");

lvc.cx = rect.Width()/2;

lvc.iSubItem = -1;

m_NandSingleFileList.InsertColumn(LIST_ITEM_FILE_PATH,&lvc);

 

lvc.pszText = _T("Start Address");

lvc.cx = rect.Width()/4;

lvc.iSubItem = -1;

m_NandSingleFileList.InsertColumn(LIST_ITEM_FILE_STARTADDR,&lvc);

 

lvc.pszText = _T("Browse");

lvc.cx = rect.Width()/8;

lvc.iSubItem = -1;

m_NandSingleFileList.InsertColumn(LIST_ITEM_FILE_BROWSE,&lvc);

显示效果如下:

bubuko.com,布布扣

接下来就需要向list control控件中添加数据。

intnIndex = 0;

intnCountOfImageNO = 12;

 

for(nIndex; nIndex

{

m_NandSingleFileList.InsertItem(nIndex,_T("boot.img"));

m_NandSingleFileList.SetItemText(nIndex, LIST_ITEM_FILE_PATH,_T("./boot.img"));

m_NandSingleFileList.SetItemText(nIndex,LIST_ITEM_FILE_STARTADDR, _T("0x00000000"));

//create button

m_NandSingleFileList.CreateButton(nIndex, 3,LIST_ITEM_FILE_BROWSE);

 

m_NandSingleFileList.SetCheck(nIndex, TRUE);

}

 

returnTRUE;

 


推荐阅读
  • BeautifulSoup4 是一个功能强大的HTML和XML解析库,它能够帮助开发者轻松地从网页中提取信息。本文将介绍BeautifulSoup4的基本功能、安装方法、与其他解析工具的对比以及简单的使用示例。 ... [详细]
  • 本文探讨了 Boost 库中的 Program Options 组件,这是一个强大的工具,用于解析命令行参数和配置文件。文章介绍了如何正确设置和使用该组件,包括处理复杂选项和负数值的方法。 ... [详细]
  • 解决 Pytest 运行时出现 FileNotFoundError 的方法
    在使用 Pytest 进行测试时,可能会遇到 FileNotFoundError 错误,提示无法找到指定的文件或目录。本文将探讨该错误的原因及解决方案。 ... [详细]
  • 本文详细介绍了利用JavaScript实现的五种不同的网页弹出窗口技术,包括全屏窗口、全屏模式窗口、带收藏链接工具栏的窗口、网页对话框及HTA窗口。 ... [详细]
  • BL550721、特点液晶驱动输出:Common输出4线,Segment输出36线内置显示寄存器364144bit2线串行接口(SCL,SDA)内置震荡电路内置液晶驱动电源电路13 ... [详细]
  • 本文介绍了如何在Windows操作系统中安装FFTW库,并详细说明了使用Visual Studio 2010进行4096点快速傅里叶变换(FFT)的步骤。包括下载预编译文件、生成库文件以及配置环境等关键环节。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • 本文介绍了如何使用Maven命令对Spring Boot项目中的子模块进行独立打包,包括依赖树的查看、项目的运行和打包等基本操作。 ... [详细]
  • 深入理解异步多线程编程模型
    现代计算机系统中的CPU通过并行处理提高效率,但所谓的并发处理实际上是一种基于轮询的模拟并行。本文探讨了现代处理器如何通过虚拟化技术实现更高的并发性能,以及在.NET框架中如何有效利用线程和异步编程模式。 ... [详细]
  • 本文通过具体示例详细介绍了 Python 中的装饰器和装饰类的使用方法,包括带参数的装饰器和装饰类的应用场景。 ... [详细]
  • HDU1085 捕获本·拉登!
    问题描述众所周知,本·拉登是一位臭名昭著的恐怖分子,他已失踪多年。但最近有报道称,他藏匿在中国杭州!虽然他躲在杭州的一个洞穴中不敢外出,但近年来他因无聊而沉迷于数学问题,并声称如果有人能解出他的题目,他就自首。 ... [详细]
  • SpringBoot新手入门指南
    本文旨在为初次接触SpringBoot的开发者提供一份详细的入门指导,包括如何快速搭建并运行一个简单的SpringBoot应用。通过本文,读者将了解Maven项目的构建、必要的配置文件设置以及基本的应用开发流程。 ... [详细]
  • GCC(GNU Compiler Collection)是GNU项目下的一款功能全面且高效的多平台编译工具,广泛应用于Linux操作系统中。本文将详细介绍GCC的特点及其基本使用方法。 ... [详细]
  • 本视频详细介绍了如何利用J2EE、JBPM 3.x/4.3、Flex流程设计器、jQuery以及授权认证机制构建高效的企业普及版贝斯OA及工作流管理系统。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
author-avatar
铁匠他夫人_738
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有