用C++开发WM应用系列文章索引

引言:

  在上一篇博文中,我们简单的学习了ListBox控件的项添加、项的全部清除。接上一篇的尾巴,我们将在这篇博文中,介绍一些ListBox的小技巧吧,比如,获取选中项、删除选中项。

正文

首先,我们打开VS2008,选择新建一个C++项目,项目名称用MFC_Listbox吧,当然是基于MFC的智能设备应用程序项目啦。来到向导窗口,选择WM5平台的SDK足矣,然后设置项目基于对话框,其他保持默认,一路Next即可。我们先打开资源视图,看到我们需要把用户界面设计成如下效果:

一个Button控件,Caption设置为Show,一个CEdit控件,为其添加一个变量:txtEdit。一个ListBox控件,为其添加一个变量:lbox。大致的界面就是如此,当然,你感兴趣的话,可以研究一下ListBox的属性,很有意思。在此就暂不作深入了。

Ok,界面画好了之后,我来介绍一下程序的逻辑吧,通过编程在程序初始化时,往ListBox中插入三个Item(使用AddString函数),当用户选中一项之后,点击按钮Show,那么被选中的Item的内容就会显示在Edit控件中。简单吧~:>

好了,我们下面针对两个主要过程来写代码:

1、程序初始化:

首先,我们要在程序开始时,就填充这个ListBox,自然而然的,我们会找到MFC_ListBoxDlg.cpp : 实现文件中,那个由系统自动生成的函数:

BOOL CMFC_ListBoxDlg::OnInitDialog(),显而易见的,函数内部已经告知我们可以添加自己定义的初始化代码,正合我意嘛,不客气了,直接往此函数中,添加我们的代码如下:

OnInitDialog代码

BOOL CMFC_ListBoxDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码
lbox.AddString(L"Test1");
lbox.AddString(L"Test2");
lbox.AddString(L"Test3");
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}

看到了吧,那三行lbox.AddString("xxx")就是我们的初始化代码。这样,在程序运行之后,ListBox中就被填充了这样三个项。

2、Show按钮点击处理程序:

这里,我们需要为Show按钮添加事件处理程序,添加方法如下图:右键单击Show按钮后,选择“添加事件处理程序”即可

后面按照向导,默认即可。之后,来到了源代码编辑页面,我们往这个函数中添加如下代码:

Show按钮代码

void CMFC_ListBoxDlg::OnBnClickedButton1()
{
CString strSelect ;//设置一个字符串变量,用于准备获取ListBox中的选中项
INT nIndex = 0 ;//用于指定被选中项索引号的INT变量
nIndex=lbox.GetCurSel();//获取ListBox中选中项的索引号
lbox.GetText(nIndex,strSelect);//将选中项索引号传入GetText函数中,把选中项内容赋给strSelect变量

txtEdit.SetWindowText(strSelect);//显示选中项的内容
}

大家可以看到,通过ListBox的GetCurSel()方法,获取当前选中的项的索引,返回值为INT,然后,用GetText()函数,获取特定索引的内容。

最终,把选中项内容赋值给Edit控件,通过SetWindowText()方法。

至此,我们就完成了获取选中项的操作。当然,之前不是说了么,如何删除选中项呢?很简单,注意到,ListBox中有一个DeleteString()函数,而传入的参数恰好是项的索引值,这不就是那个nIndex吗?简单了。

我们修改Show按钮的代码如下,即可完成选中项的删除:

Show按钮代码2

void CMFC_ListBoxDlg::OnBnClickedButton1()
{
CString strSelect ;//设置一个字符串变量,用于准备获取ListBox中的选中项
INT nIndex = 0 ;//用于指定被选中项索引号的INT变量
nIndex=lbox.GetCurSel();//获取ListBox中选中项的索引号
lbox.DeleteString(nIndex);//删除选中项
}

Ok,我们就先写到这里吧,今天看了一下工具箱中的其他控件,我会抽时间,再近期写一些其它控件的使用的文章。感谢大家的关注~有不足之处,请尽情发表~嘿!

结尾:

在这一次的学习中,我们深入了解了ListBox的选中项操作,比如GetCurSel函数,用于获取当前选中项的索引;GetText(int index)函数,用于获取指定索引项的内容;DeleteString(int index)函数,用于删除指定索引项。当然了,还有很多很多方法,就有待大家挖掘了~~~~

『原创』用C++开发WM应用系列(6)——深化ListBox控件相关推荐

  1. 『原创』用C++开发WM应用系列(2)——拨打电话

    用C++开发WM应用系列文章索引 引言: 在上一节中,我们通过了一个MFC智能设备程序项目,带大家一起走进了Native c++开发WM的大门,我们了解了如何为程序添加控件.事件,以及自定义自己的类. ...

  2. 微软云盘配合服务器,『原创』开源5T微软云盘搭建教程onedrive index

    前言 为什么搭建一个微软共享云盘?百度云.蓝奏云不好吗?百度云有会员限制功能,各种限制更是不少,蓝奏云速度超快,但是貌似不支持大文件.微软毕竟是大厂,可用的5T教育邮箱现在也很好搞到,之所以采用是因为 ...

  3. COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)

    源代码下载:MyActiveX20081229.rar 声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改 ...

  4. firefox扩展开发(二):用XUL创建窗口控件

    firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...

  5. SAP UI5 应用开发教程之六十 - SAP UI5 地图控件的一些高级用法试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  6. android禁止下拉刷新,Android开发之无痕过渡下拉刷新控件的实现思路详解

    相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下 ...

  7. 全能开发工具 ComponentOne(3)——常用控件下篇

    在全能开发工具 ComponentOne -- 常用控件上篇中,小编向大家分别介绍了: 1.高性能表格控件 -- ComponentOne FlexGrid 2.包含80多种2D和3D类型的图表控件 ...

  8. 『原创』WM利用Google Weather API获取天气预报

    最近,项目忙得很,公司里杂事很多都跑到我这里,搞得我也不能专心的做项目,索性,今天抽空,玩了一玩谷歌的天气预报服务.相信通过这篇文章,能让大家了解在.net CF下如何发起一个http访问请求(Web ...

  9. 『原创』让.Net CF实现智能提示(AutoComplete)功能

    前言 最近,一直在做Winform方面的开发,有一个公交信息查询的场景,用户在起始站输入框输入部分站点名称,系统能够自动给他建议和提示,类似Google中的自动补全.智能提示之类的功能,在Winfor ...

最新文章

  1. [luogu5004]专心OI - 跳房子【矩阵加速+动态规划】
  2. 2月1日学习内容整理:算法
  3. 服务器温控系统,服务器温度监控
  4. .NET 2.0 中使用Active Directory 应用程序模式 (ADAM)
  5. html dom 高级,DOM 高级工程师不完全指南
  6. 嫌微软要价“太狠” 东莞网吧巨头拒绝付费
  7. 龙芯下中标系统C语言查找设备号_龙芯:主控进驻国产激光打印机并适配麒麟OS...
  8. sass使用相关报错
  9. debugger怎么用_谷歌开发者工具,这些技巧你用过么?
  10. 计算机保研和考研复试相同吗,保研与考研有什么区别?
  11. java imap收邮件_android pop3与imap方式接收邮件(javamail)
  12. 「1s」即可!用 VS Code 一键玩转 GitHub 代码!
  13. EMNLP'21 | Dialogue System 对话系统
  14. 从优秀到卓越 pdf_演讲口才培训:演讲能力是卓越领导者需要具备的能力
  15. idea 因破解而无法打开的问题
  16. MySQL面试题常见知识点总结
  17. Android集成LAME库,实现pcm转mp3
  18. 蒙特卡洛树搜索 Monte Carlo Tree Search
  19. 微信公众号开发之网页授权获取用户基本信息
  20. ios手机号和邮箱(支付宝账号)脱敏

热门文章

  1. 基于MATLAB的语音信号的时域特性分析(一)——分帧、窗函数
  2. Python拟合数据样本的分布
  3. Zookeeper3.4.9分布式集群安装
  4. Recipe 1.6. Converting Between Characters and Values
  5. Http接口开发(自测服务端客户端)
  6. Android wechat 分享
  7. springboot+druid+mybatis-Plus 配置详解
  8. Eclipse中导入项目后js报错解决方法
  9. shell单例-处理方案
  10. YII2 载入默认值 loadDefaultValues