CListBox

CListBox

一:词条简介

CObject←CCmdTarget←CWnd←CListBox

CListBox类提供Windows列表框的功能。列表框显示项的列表,如用户可以见到和选择的文件名称。在单选列表框里,用户只可选择一个项。在多选列表框里,可选择许多项。当用户选择某项时,其高亮显示且列表框给父窗口发送一个通知消息。

  可从对话模板或直接在你的代码中创建列表框。直接创建时,构造CListBox对象,再调用Create成员函数创建Windows列表框控件并将其附加给CListBox对象。要在对话模板中使用列表框,可在对话框类中声明一个CListbox 变量,再在对话框类的DoDataExchange中使用DDX_Control连接成员变量到此控件(当向对话框类中添加控件变量时,ClassWizard自动为你实现)。

  构造函数可以是从CListBox派生的类的一个单步进程。为派生类写构造函数并从中调用Create。如果要处理由列表框发送到其父亲(通常为从CDialog派生的类)的Windows通知消息,为每个消息添加消息映射入口和消息处理成员函数到父类。

  每个消息映射入口有以下形式:

ON_Notification( id,memberFxn )

id 指定发送通知的列表框控件的子窗口,memberFxn 是编写处理通知的父成员函数名的地方。

  父函数原型如下:

afx_msg void memberFxn( );

  下面是可能的消息映射入口列表和描述它们可能被发送到父亲的情况:

ON_LBN_DBLCLK 用户双击列表框中的字符串。只有LBS_NOTIFY风格的列表框才会发送此通知消息。 

ON_LBN_ERRSPACE 列表框不能重新分配足够的内存来满足请求。 

ON_LBN_KILLFOCUS 列表框正失去输入焦点。 

ON_LBN_SELCANCEL 当前列表框选择被取消。此消息只有在列表框是LBS_NOTIFY风格时才发送。 

ON_LBN_SELCHANGE 列表框中的选择可能改变。如果选择被CListBox::SetCurSel成员函数改变,则通知不发送。此通知只适用于LBS_NOTIFY风格的列表框。无论何时用户按下箭头键,即使选择未改变,LBN_SELCHANGE通知消息都被发送给多选列表框。 

ON_LBN_SETFOCUS 列表框正在接收输入焦点。 

ON_WM_CHARTOITEM 一个无字符串的自绘制列表接受WM_CHAR消息。 

ON_WM_VKEYTOITEM LBS_WANTKEYBOARDINPUT风格的列表框接受WM_KEYDOWN消息。 

  如果在对话框中构造一个CListBox对象(通过对话资源),当用户关闭对话框时,CListBox对象自动毁弃。

  如果在窗口中构造一个CListBox对象,可能需要毁弃CListBox对象。如果在栈上创建CListBox对象,它会自动毁弃。如果使用new函数在堆上创建CListBox对象,必须对此对象调用delete来在用户关闭父窗口时毁弃它。

如果在CListBox对象中分配内存,可覆盖CListBox析构程序释放分配的内存。

#include <afxwin.h>

请参阅:CWnd, CButton, CComboBox, CEdit, CScrollBar, CStatic 

二:类成员

CListBox类的成员

  构造函数 CListBox 构造一个CListBox对象 

  初始化 Create 创建Windows列表框并附加给CListBox对象 

InitStorage 为列表框的项和字符串预分配内存块 

一般操作: 

GetCount 返回列表框中的字符串数目

GetHorizontalExtent 返回列表框的水平宽度,用像素表示 

SetHorizontalExtent 设置列表框的水平宽度,用像素表示 

GetTopIndex 返回列表框中第一个可见字符串的索引 

SetTopIndex 设置列表框中第一个可见字符串的基于零的索引 

GetItemData 返回与列表框有关的32位值 

GetItemDataPtr 返回指向列表框的指针 

SetItemData 设置列表框有关的32位值 

SetItemDataPtr 设置指向列表框的指针 

GetItemRect 返回当前显示的列表框项的相应矩形 

ItemFromPoint 返回与某点最近的列表框项的索引 

SetItemHeight 设置列表框中项的高度 

GetItemHeight 确定列表框中项的高度 

GetSel 返回列表框某项的选择 

GetText 拷贝某列表框项到缓冲区 

GetTextLen 返回列表框的字节长 

SetColumnWidth 设置多列列表框的列宽 

SetTabStops 设置列表框制表键停止位置 

GetLocale 获取列表框的地点标识符 

SetLocale 设置列表框的地点标识符 

  单选操作 GetCurSel 返回列表框中当前选择串的基于零的索引 

SetCurSel 选择一个列表框字符串 

  多选操作 SetSel 在多选列表框中选择或不选某个列表框项 

GetCaretIndex 确定在多选列表框中有焦点矩形的项的索引 

SetCaretIndex 设置焦点矩形到多选列表框中的指定的索引项 

GetSelCount 返回多选列表框中当前选择的字符串的数目 

GetSelItems 返回列表框中当前选择的字符串的索引 

SelItemRange 选择/不选多选列表框中的一些字符串 

SetAnchorIndex 设置多选列表框的锚点以开始扩展选择 

GetAnchorIndex 获取列表框当前锚点项的基于零的索引 

字符串操作: 

AddString 添加一个字符串到列表框中 

DeleteString 从列表框中删除一个字符串 

InsertString 在列表框中指定位置插入一个字符串 

ResetContent 清空列表框所有入口 

Dir 从当前目录添加文件名称到列表框中 

FindString 在列表框中查找一个字符串 

FindStringExact 查找与指定的字符串匹配的第一个列表框字符串 

SelectString 查找并选择单选列表框中的一个字符串 

  可覆盖的函数 DrawItem 当自绘制列表框的一个可视部分改变时,被框架调用 

MeasureItem 当自绘制列表框创建时,被框架调用来确定列表框维数 

CompareItem 被框架调用以确定一系列列表框中某新项的位置 

DeleteItem 当用户从自绘制列表框中删除某项时,被框架调用 

VKeyToItem 覆盖以提供LBS_WANTKEYBOARDINPUT风格列表框的设置所需的定制WM_KEYDOWN 

CharToItem 覆盖以提供不含字符串的自绘制列表框定制WM_CHAR 

三:构造函数

CListBox::CListBox

CListBox( );

  说明:

  分两步构造一个CListBox对象。首先调用构造函数CListBox,再调用Create,初始化Windows列表框并将其附加给CListBox。

  请参阅:CListBox::Create

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web前端-

JQuery语法

您也许已经注意到在我们的实例中的所有 jQuery 函数位于一个 document ready 函数中:

1082
来自专栏前端知识分享

Vue---自定义组件

       组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,...

1732
来自专栏JavaEdge

2018-07-161 初识JQuery

进入官方网站获取最新的版本 http://jquery.com/download/ ,这里需要注意 jQuery 分 2 个系列版本 1.x 与 2.x,主要...

701
来自专栏新工科课程建设探讨——以能源与动力工程专业为例

2.2.3 文档对象模型DOM及表单

文档对象模型DOM用途是什么?先从一棵树说起。下面是一棵树,由,根部、枝干、叶构成,通过根部可以访问到任何一个叶节点。

1980
来自专栏互联网开发者交流社区

最新jquery+easyui_api培训文档

1334
来自专栏Jacklin攻城狮

[UIVIew]谈谈对drawRect的理解

2342
来自专栏coder修行路

css补充、JavaScript、Dom

css补充: position: fixed:可以将标签固定在页面的某个位置 absolute+relative:通过两者的结合可以让标签在一个相对的位置 代码...

1798
来自专栏阮一峰的网络日志

HTML 自定义元素教程

组件是 Web 开发的方向,现在的热点是 JavaScript 组件,但是 HTML 组件未来可能更有希望。 本文就介绍 HTML 组件的基础知识:自定义元素(...

3178
来自专栏Android干货

小程序实践(十):textarea实现简单的编辑文本界面

1322
来自专栏程序员叨叨叨

Excel单元格内计算式及字符串拼接实现

&:逻辑并,用以拼接字符串 =:计算式求结果 " ":其内部放入要显示的字符串

946

扫码关注云+社区

领取腾讯云代金券