2024年5月6日发(作者:)
CCheckListBox
CObject
└CCmdTarget
└CWnd
└CListBox
└CCheckListBox
类CCheckListBox实现了Windows复选列表框。复选列表框显示项的一个列表,例如文件名列表。列表中的每项都有一
个复选框。
CCheckListBox只用于自定义的控件,列表中不仅仅包含字符串文本。
当然简单的复选列表框可以只有字符串文本和相应的复选框。实际上也可以没有文本。例如可以是一个位图以及相应于
复选框的列表。
创建自己的复选列表框,要从类CCheckListBox派生一个子类。然后为它写一个构造函数,并调用成员函数Create。
如果复选列表框是缺省形式的(由左边带有固定大小的复选框的字符串组成),就可以用缺省的CCheckListBox::DrawItem
函数绘制复选列表框。否则就要覆盖函数CListBox::CompareItem、CCheckListBox::DrawItem以及
CCheckListBox::Meas-ureItem。
可以在对话框模板或程序代码中直接创建一个复选列表框。
#include
请参阅:CListBox
CCheckListBox类的成员
构造函数
CCheckListBox
构造一个CCheckListBox对象
Create
属性函数
SetCheckStyle
GetCheckStyle
SetCheck
GetCheck
Enable
IsEnabled
设置控件的复选框的风格
获取控件的复选框的风格
设置某个项的复选框的状态
取得某个项的复选框的状态
允许或禁止存取某个项
检测某个项是否允许存取
创建Windows复选列表框并应用到CCheckListBox对象上
OnGetCheckPosition
由框架调用,取得某个项的复选框的状态
可覆盖的函数
DrawItem
当自定义的列表框的某个可视属性改变时由框架调用
MeasureItem
当自定义的列表框的风格改变时由框架调用
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
ON_LBN_ERRSPACE
用户双击列表框中的字符串。只有LBS_NOTIFY风格的列表框才会发送此通知消息。
列表框不能重新分配足够的内存来满足请求。
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
请参阅:CWnd, CButton, CComboBox, CEdit, CScrollBar, CStatic
发布评论