MFC常用类介绍(一)
C++学习 2010-06-27 11:43:05 阅读332 评论0 字号:大中小 订阅
◆ CStatic
CObject |
└CCmdTarget |
└CWnd |
└CStatic |
CStatic类提供了一个Windows静态控件的性能。一个静态控件用来显示一个文本字符串,框,矩形,图标,光标,位图,或增强的图元文件。它可以被用来作为标签,框,或用来分隔其它的控件。一个静态控件不接收输入,也不提供输出;但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父有关设备点击的消息。创建一个静态控件分两步。首先,调用构造函数来构造此CStatic对象,然后调用Create成员函数来创建此静态控件并将它与该CStatic对象连接。如果你是在一个对话框中创建了一个静态控件(通过一个对话框资源),则当用户关闭这个对话框时,此CStatic对象被自动销毁。如果你是在一个窗口中创建了一个CStatic对象,则必须由你来销毁它。在一个窗口的堆栈中创建的CStatic对象将自动被销毁。如果你是使用new函数在堆中创建CStatic对象,则当你使用完后,必须调用delete来销毁这个CStatic对象。
#include请参阅:
CWnd,CButton,CComboBox,CEdit,CListBox,CScrollBar,CDialog
CStatic类成员
构造
初始化Create | 创建Windows静态控件并将它与该CStatic对象连接 |
操作符SetBitmap | 指定要在此静态控件中显示的位图 |
GetBitmap | 获取先前用SetBitmap设置的位图的句柄 |
SetIcon | 指定一个要在此静态控件中显示的图标 |
GetIcon | 获取先前用SetIcon设置的图标的句柄 |
SetCursor | 指定要显示在此静态控件中的光标图像 |
GetCursor | 获取先前用SetCursor设置的光标图像的句柄 |
SetEnhMetaFile | 指定要显示在此静态控件中的增强的图元文件 |
GetEnhMetaFile | 获取先前用SetEnhMetaFile设置的增强图元文件的句柄 |
◆ CEditCObject |
└CCmdTarget |
└CWnd |
└CEdit |
CEdit类提供了Windows编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。可以通过对话模板或直接从代码中创建一个编辑控件。在两种情形下,首先调用CEdit构造程序构造CEdit对象,再调用Create成员函数创建Windows编辑控件并将其与CEdit对象连接。
构造在CEdit的派生类中可以单步实现。为派生类编写构造程序并从构造程序中调用Create。
CEdit从CWnd继承了重要的功能,要在CEdit对象中设置或获取文本,使用CWnd成员函数SetWindowText和GetWindowText,可以设置和得到编辑控件的全部内容,即使它是一个多行控件。如果编辑控件是多行的,使用CEdit成员函数GetLine,GetSel,GetSel和ReplaceSel来获取和写入控件的部分文本。
如果要处理编辑控件发往其父类(通常是一个CDialog派生类)的通知消息,则向父类中为每一消息添加一个消息映射入口和消息处理成员函数。
各消息映射入口可采用如下形式:
ON_Notification(id,memberFxn)
其中id指定了发送通知的编辑控件的子窗口ID,memberFxn为你写好的处理通知的父成员函数的名字。
父函数形式如下:
afx_msgvoidmemberFxn();
下面是一组可能的消息映射入口,以及在何种情况下向父类发送的描述:
· | ON_EN_CHANGE | 用户采取的行动可能会改变编辑控件的文本。与EN_UPDATE通知消息不同,该通知是在Windows更新显示之后发送的。 |
· | ON_EN_ERRSPACE | 编辑控件不能为特定请求分配足够的空间。 |
· | ON_EN_HSCROLL | 用户单击了编辑控件中的水平滚动条,父窗口在屏幕更新之前被通知。 |
· | ON_EN_KILLFOCUS | 编辑控件失去输入焦点。 |
· | ON_EN_MAXTEXT | 当前输入超过了为编辑控件指定的数目,并作截尾处理。当编辑控件不具有ON_EN_HSCROLL风格且要输入的字符会超过编辑控件的宽度时,发送消息。当编辑控件不具有ON_EN_VSCROLL风格且要输入的字符会超过编辑控件的高度时,也会发送消息。 |
· | ON_EN_SETFOCUS | 编辑控件获得焦点。 |
· | ON_EN_UPDATE | 编辑控件将要显示变动的文本。在控件对文本格式化之后但在显示文本之前发送消息,以便在必要时改变窗口尺寸。 |
· | ON_EN_VSCROLL | 用户单击了编辑控件中的垂直滚动条,父窗口在屏幕更新之前被通知。 |
如果在对话框内创建CEdit对象,CEdit对象在用户关闭对话框时自动被删除。如果使用对话框编辑器从对话资源中创建CEdit对象,CEdit对象在用户关闭对话框时自动被删除。
如果在窗口内创建CEdit对象,也需要删除它。如果在栈上创建CEdit对象,它被自动删除。如果使用new函数在堆上创建CEdit对象,在用户中止编辑控件时,必须对其调用delete来删除它。如果在CEdit对象中分配存储空间,覆盖CEdit析构程序来处理分配情况。
关于CEdit的更多信息,请参阅联机文档“VisualC++程序员指南”中的“控件主题”。
#include请参阅:
CWnd,CButton,CComboBox,CListBox,CScrollBar,CStatic,CDialog
CEdit类的成员
构造函数
CEdit | 构造一个CEdit控件对象 |
Create | 创建一个Windows编辑控件,并将其与CEdit对象连接 |
属性CanUndo | 决定一个编辑控件操作是否能够被撤销 |
GetLineCount | 获得多行编辑控件中的行数 |
GetModify | 决定编辑控件的内容是否被修改 |
SetModify | 为编辑控件设置或清除修改标记 |
GetRect | 为编辑控件获取格式化的矩形 |
GetHandle | 获得为当前多行编辑控件分配的内存的句柄 |
SetHandle | 设置为多行编辑控件使用的本地内存的句柄 |
SetMargins | 为CEdit设置左边和右边的空白边界 |
GetMargins | 获得为CEdit设置左边和右边的空白边界 |
SetLimitText | 设置CEdit能够容纳的文本的最大量 |
GetLimitText | 获得CEdit能够容纳的文本的最大量 |
PosFromChar | 获得指定字符索引的左上角的坐标 |
CharFromPos | 获得最靠近指定位置的字符的行和字符索引 |
GetLine | 从编辑控件中获得一行文本 |
GetPasswordChar | 获得当用户输入文本时在编辑控件中显示的口令 |
GetFirstVisibleLeLine | 决定在编辑控件中最顶部的可视的行 |
操作EmptyUndoBuffer | 重新设置(清除)编辑控件的撤销标记 |
FmtLines | 设置在多行编辑控件中的软回车打开或关闭 |
LimitText | 用户在输入文本时的文本长度 |
LineFromChar | 获得包含指定字符索引的行的数目 |
LineIndex | 获得在多行编辑控件中的某行的字符索引 |
LineLength | 获得编辑控件中的行的长度 |
LineScroll | 在多行编辑控件中滚动文本 |
ReplaceSel | 用指定文本覆盖编辑控件中当前被选中的文本 |
SetPasswordChar | 设置或清除当用户输入文本时在编辑控件中显示的口令 |
SetRect | 设置多行编辑控件的带格式的矩形,并更新该控件 |
SetRectNP | 设置多行编辑控件的带格式的矩形,而不必重新绘制 |
SetSel | 在编辑控件中选定文本SetTabStops设置多行编辑控件的制表键停顿位 |
SetReadOnly | 为编辑控件设置只读状态 |
剪贴板操作Undo | 撤销上一次的编辑控件操作 |
Clear | 删除(清除)编辑控件中当前选中的文本 |
Copy | 将编辑控件中的当前选中文本以CF_TEXT格式拷贝到剪贴板中 |
Cut | 删除编辑控件中当前选中的文本,并将删除的文本以CF_TEXT格式拷贝到剪贴板中 |
Paste | 在当前光标位置插入剪贴板内的文本。只有在剪贴板数据为CF_TEXT格式时才进行插入 |
◆ CButtonCObject |
└CCmdTarget |
└CWnd |
└CButton |
类CButton提供了对Windows按钮控件的操作。按钮控件是一个小的矩形子窗口,可以通过单击选中(按下)或不选中。按钮可以单独使用,也可以成组使用,它还可以具有文本标题。在用户单击它的时候,按钮通常要改变显示外观。典型的按钮控件有:复选框、单选钮和下压式按钮(pushbutton)。一个CButton对象可以是它们中的一种,这由它的按钮风格和成员函数Create的初始化决定。
此外,类CButtonBitmap是从类CButton继承而来的,不过它支持按钮的图像标签。一个CButtonBitmap对象可以分别为它的四种状态(未按下、按下、获得焦点和禁止存取)设置不同的位图。
既可以从对话框模板中创建一个按钮控件,也可以直接在代码中创建。
无论哪种情况,都要先调用构造函数CButton构造一个CButton对象,然后调用成员函数Create创建Windows按钮控件并应用到CButton对象上。
在一个从类CButton派生出来的类中,构造可以一步完成。程序员可以为这个派生类编写一个构造函数,并在其中调用Create函数。
如果想处理Windows的通知消息,如位图按钮控件发给它的父对象(通常是从CDialog继承来的)的消息,就要在父对象中加入消息映射入口以及处理每个消息的成员函数。
每个消息映射入口的格式如下:
ON_Notification(id,memberFxn)
其中id指定了发送通知的控件的子窗口的ID,而memberFxn指定了处理该通知的父对象中的成员函数名。
父对象的函数原型格式如下:
afx_msgvoidmemberFxn();
可能的消息映射入口如下:
映射入口 | 何时向父对象发送消息 |
ON_BN_CLICKED | 用户单击按钮时 |
ON_BN_DOUBLECLICKED | 用户双击按钮时 |
如果在对话框资源中创建了CButton对象,则在用户关闭该对话框时会自动撤消这个CButton对象。如果在窗口中创建了CButton对象,就可能需要自己撤消它。如果是用new函数在内存的堆中创建该对象的,则在用户关闭该窗口按钮控件时,必须用delete函数撤消它。如果在堆栈中创建了该对象,或者它嵌入在父对话框对象中,系统会自动撤消它。#include请参阅:
CWnd,CComboBox,CEdit,CListBox,CScrollBar,CStatic,CBitmapButton,CDialog
CButton类的成员
构造函数
初始化函数Create | 创建Windows按钮控件并在CButton对象上应用 |
操作GetState | 检索按钮控件的选中状态、加亮状态和获得焦点状态 |
SetState | 设置按钮控件的加亮状态 |
GetCheck | 检索按钮控件的选中状态 |
SetCheck | 设置按钮控件的选中状态 |
GetButtonStyle | 检索按钮控件的风格 |
SetButtonStyle | 设置按钮控件的风格 |
GetIcon | 检索此前调用SetIcon设置的图标句柄 |
SetIcon | 指定一个在按钮上显示的图标 |
GetBitmap | 检索此前调用SetBitmap设置的位图的句柄 |
SetBitmap | 设置在按钮上显示的位图 |
GetCursor | 检索此前调用SetCursor设置的光标图像的句柄 |
SetCursor | 设置在按钮上显示的光标图像 |
可覆盖的函数DrawItem | 可以覆盖它来绘制自定义的CButton对象 |
◆ CFileDialogCObject |
└CCmdTarget |
└CWnd |
└CDialog |
└CCommonDialog |
└CFileDialog |
CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。可以用构造函数提供的方式使用CFileDialog,也可以从CFileDialog派生出自己的对话类并编写一个构造函数来适应你的需要。每种情况下,对话框都与标准MFC对话框一样工作。因为它们都是CCommonDialog类的派生类。
要使用CFileDialog,先用CFileDialog构造函数构造一个对象,当创建了一个对话框后,可以设置或修改m_ofn结构中的任何值,以初始化对话框控件的值或状态。m_ofn结构是OPENFILENAME类型的。要了解更多信息,可参阅联机文档“Win32SDK”中的OPENFILENAME结构。
初始化对话框控件后,调用DoModal成员函数显示对话框并使用户输入路径和文件。DoModal返回不论是用户选择了OK(IDOK)还是取消(IDCANCEL)按钮。
当DoModal返回IDOK,可以使用某一个CFileDIalog的公共成员函数获取用户输入的信息。
CFileDIalog包含许多保护成员,使你可以处理常用的共享冲突、文件名合法性检查、列表框改变通知。这些保护成员对许多应用来说用处不大,因为缺省处理是自动的。对这些函数来说,消息映射入口是不必要的,因为它们是标准虚函数。
可以使用WindowsCommDlgExtendError函数判断在初始化对话框时是否是发生了错误,并获取关于错误的更多信息。
析构一个CFileDialog对象是自动,无须调用CDialog::EndDialog。
要使用户选用多个文件,可在调用DoModal之前设置OFN_ALLOWMULTISELECT标志。你应提供文件名缓冲区来放置返回的多个文件名的列表,这通过用一个分配了的缓冲区指针替换m_ofn.lpstrFile来实现,要在创建了CFileDialog之后调用DoModal之前进行此操作。另外,必须用m_ofn.lpstrFile指向的缓冲区字节数来设置m_ofn.nMaxFile。
CFileDialog依赖于Windows3.1及以后版本中的COMMDLG.DLL。
如果从CFileDialog中派生出一个新类,可用消息映射处理。要扩展消息处理,从CWnd中派生一个类,向新类中加入一个消息映射并为新消息提供成员函数,无须提供一个钩子函数来定制对话框。
要定制对话框,从CFileDialog中派生一个对象,提供一个定制对话模板,从扩展控件中加入一个消息映射,处理通知消息。任意未处理的消息将传递给基类。
无须定制钩子函数。
要了解有关使用CFileDialog的信息,可参阅联机文档“VisualC++程序员指南”中的“常用对话类”。
#includeCFileDialog类的成员
数据成员
m_ofn | WindowsOPENFILENAME结构,提供对基本文件对话框参数的访问 |
构造函数CFileDialog | 构造一个CFileDialog对象操作 |
DoModal | 显示对话框并使用户可以进行选择 |
GetPathName | 返回选定文件的完整路径 |
GetFileName | 返回选定文件的文件名 |
GetFileExt | 返回选定文件的扩展文件名 |
GetFileTitle | 返回选定文件的标题 |
GetNextPathName | 返回下一个选定文件的完整路径 |
GetReadOnlyPref | 返回选定文件的只读状态 |
GetStartPosition | 返回文件名列表的第一个元素位置 |
可覆盖的函数OnShareViolation | 发生共享冲突时调用 |
OnFileNameOK | 确认键入对话框中的文件名 |
OnLBSelChangedNotify | 当列表框选择改变时调用 |
OnInitDone | 处理WM_NOTIFYCDN_INITDONE消息 |
OnFileNameChange | 处理WM_NOTIFYCDN_SELCHANGE消息 |
OnFolderChange | 处理WM_NOTIFYCDN_FOLDERCHANGE消息 |
OnTypeChange | 处理WM_NOTIFYCDN_TYPECHANGE消息 |
◆ CListBoxCObject |
└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_msgvoidmemberFxn();
下面是可能的消息映射入口列表和描述它们可能被发送到父亲的情况:
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请参阅:CWnd,CButton,CComboBox,CEdit,CScrollBar,CStatic
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 |
◆ CCheckListBoxCObject |
└CCmdTarget |
└CWnd |
└CListBox |
└CCheckListBox |
类CCheckListBox实现了Windows复选列表框。复选列表框显示项的一个列表,例如文件名列表。列表中的每项都有一个复选框。CCheckListBox只用于自定义的控件,列表中不仅仅包含字符串文本。
当然简单的复选列表框可以只有字符串文本和相应的复选框。实际上也可以没有文本。例如可以是一个位图以及相应于复选框的列表。
创建自己的复选列表框,要从类CCheckListBox派生一个子类。然后为它写一个构造函数,并调用成员函数Create。
如果复选列表框是缺省形式的(由左边带有固定大小的复选框的字符串组成),就可以用缺省的CCheckListBox::DrawItem函数绘制复选列表框。否则就要覆盖函数CListBox::CompareItem、CCheckListBox::DrawItem以及CCheckListBox::Meas-ureItem。
可以在对话框模板或程序代码中直接创建一个复选列表框。
#include请参阅:CListBox
CCheckListBox类的成员
构造函数
CCheckListBox | 构造一个CCheckListBox对象 |
Create | 创建Windows复选列表框并应用到CCheckListBox对象上 |
属性函数SetCheckStyle | 设置控件的复选框的风格 |
GetCheckStyle | 获取控件的复选框的风格 |
SetCheck | 设置某个项的复选框的状态 |
GetCheck | 取得某个项的复选框的状态 |
Enable | 允许或禁止存取某个项 |
IsEnabled | 检测某个项是否允许存取 |
OnGetCheckPosition | 由框架调用,取得某个项的复选框的状态 |
可覆盖的函数DrawItem | 当自定义的列表框的某个可视属性改变时由框架调用 |
MeasureItem | 当自定义的列表框的风格改变时由框架调用 |
MFC常用类介绍(二)C++学习 2010-06-27 11:45:06 阅读356 评论0 字号:大中小 订阅
◆ CComboBox
CObject |
└CCmdTarget |
└CWnd |
└CComboBox |
类CComboBox封装了Windows组合框。组合框由一个列表框和一个静态控件(或编辑控件)组成。列表框部分可以是一直显示的,也可以是隐藏的,在用户单击编辑控件边上的按钮(下拉箭头)时下拉该列表框。列表框中当前选中的项(如果有的话)显示在静态控件或编辑控件中。如果组合框带有下拉风格,则当用户在编辑框中输入列表项的开始字符时,对应项(如果有的话)中的第一个将会加亮显示。下表列出了组合框的三种风格:
风格 | 列表框何时可见 | 静态控件还是编辑控件 |
Simple | 总是可见 | 编辑控件 |
Drop-down | 当用户单击控件边上的下拉箭头时 | 编辑控件 |
Drop-downlist | 当用户单击控件边上的下拉箭头时 | 静态控件 |
可以从对话框模板中建立一个CComboBox对象,也可以直接在代码中创建。无论采用哪种方法,都要先调用CComboBox的构造函数构造一个CComboBox对象,然后调用成员函数Create创建控件并在CComboBox对象上应用它。消息映射入口的格式如下:
ON_Notification(id,memberFxn)
其中id指定了发送通知的组合框控件的子窗口ID,而memberFxn是用于处理该通知的父成员函数的名字。
父窗口的函数原型的格式如下:
afx_msgvoidmemberFxn();
通知发送的次序是不能预先确定的。例如,通知CBN_SELCHANGE既可能在CBN_CLOSEUP之前也可能在它之后出现。
可能的消息映射入口如下:
· | ON_CBN_CLOSEUP | (Windows3.1及更高版本)组合框的列表已被关闭。对于风格为CBS_SIMPLE的组合框来说,不会发送该通知消息。 |
· | ON_CBN_DBCLICK | 用户双击了列表框中的一个字符串。只对风格为CBS_SIMPLE的组合框发送。对于风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框来说,不会出现双击的消息,因为一次单击就会使下拉列表隐藏或显示了。 |
· | ON_CBN_DROPDOWN | 下拉出下拉列表(变为可见)。只对风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框起作用。 |
· | ON_CBN_EDITCHANGE | 用户发出了一个可能改变编辑控件中文本的动作。与消息CBN_EDITUPDATE不同,本消息是在Windows刷新屏幕之后发出的。风格为CBS_DROPDOWNLIST的组合框没有该通知。 |
· | ON_CBN_EDITUPDATE | 编辑控件部分将显示变化了的文本。本通知消息在控件已经格式化了文本但没有显示时发送。风格为CBS_DROPDOWNLIST的组合框没有该通知。 |
· | ON_CBN_ERRSPACE | 不能为组合框分配足够的内存进行响应某个请求。 |
· | ON_CBN_SELENDCANCEL | (Wndows3.1及更高版本)表明用户的选择将被忽略。用户在单击了一个项之后,又单击了另外一个窗口或控件隐藏了组合框的下拉列表。此通知消息在CBN_CLOSEUP消息之前发送,以表明用户的选择将被忽略。即使没有发送CBN_CLOSEUP通知消息,也会发送CBN_SELENDCANCEL或CBN_SELENDOK消息(例如风格为CBS_SIMPLE的组合框)。 |
· | ON_CBN_SELENDOK | 用户在选择了一项以后,要么按了ENTER键,要么按了向下箭头键,从而隐藏了组合框的列表。此通知消息在CBN_CLOSEUP之前发送,表明用户的选择将不被认为是有效的。即使没有发送CBN_CLOSEUP通知消息,也会发送CBN_SELENDCANCEL或CBN_SEL-ENDOK消息(例如风格为CBS_SIMPLE的组合框)。 |
· | ON_CBN_KILLFOCUS | 组合框将失去输入焦点。 |
· | ON_CBN_SELCHANGE | 用户在列表中单击或者利用箭头键选择了另一个项,从而引起了选中项的改变。在处理此消息时,编辑控件中的文本只能通过GetLBText或者类似的某个函数存取。不能使用GetWindowText函数。 |
· | ON_CBN_SETFOCUS | 组合框获得输入焦点。 |
如果在对话框中创建了一个CComboBox对象,在关闭对话框时该CComboBox对象将自动撤消。如果在另外一个窗口对象中嵌入了一个CComboBox对象,不需要显式地撤消它。如果在堆栈中创建了一个CComboBox对象,它也会被自动地撤消。如果采用new在内存堆中创建了一个CComboBox对象,则必须调用delete来撤消它。
#include请参阅:
CWnd,CButton,CEdit,CListBox,CScrollBar,CStatic,CDialog
CComboBox类的成员
构造函数
初始化函数Create | 创建一个组合框并应用到CComboBox对象上 |
InitStorage | 预先为组合框的列表框中的项和字符串分配内存 |
通用操作GetCount | 取得组合框的列表框中项的个数 |
GetCurSel | 取得组合框的列表框中当前选中项(如果有的话)的下标 |
SetCurSel | 在组合框的列表框中选择一个字符串 |
GetEditSel | 取得组合框的编辑控件中当前选项的起止字符位置 |
SetEditSel | 选中组合框的编辑控件中的字符 |
SetItemData | 设置组合框中指定项的32位值 |
SetItemDataPtr | 把组合框中指定项的32位值设置成一个指定的void型指针 |
GetItemData | 检索应用为组合框的项提供的32位值 |
GetItemDataPtr | 检索应用为组合框的项提供的32位值,返回一个void型指针 |
GetTopIndex | 返回组合框中列表框的第一个可见项的下标 |
SetTopIndex | 让组合框的列表框显示指定下标所在的项 |
SetHorizontalExtent | 设置组合框中列表框的水平宽度(以像素为单位),如果列表超过该宽度,将需要用滚动条 |
GetHorizontalExtent | 返回组合框中列表框的水平宽度(以像素为单位) |
SetDroppedWidth | 设置组合框中下拉列表允许的最小宽度 |
GetDroppedWidth | 返回组合框中下拉列表允许的最小宽度 |
Clear | 删除编辑控件中的当前选择(如果有的话) |
Copy | 以CF_TEXT格式拷贝编辑控件中的当前选择(如果有的话)到剪贴板 |
Cut | 删除编辑控件中的选择项(如果有的话),并把删除的内容以CF_TEXT格式拷贝到剪贴板 |
Paste | 在编辑控件中的当前位置粘贴剪贴板中的内容。仅当剪贴板中的数据是CF_TEXT格式的才会真正插入 |
LimitText | 设置用户可以在组合框的编辑控件中输入的文本的最大长度 |
SetItemHeight | 设置组合宽中列表框的项的高度或编辑控件(或静态控件)中文本的高度 |
GetItemHeight | 取得组合框中列表项的高度 |
GetLBText | 从组合框的列表框中取得一个字符串 |
GetLBTextLen | 取得组合框的列表框中某个字符串的长度 |
ShowDropDown | 显示或者隐藏风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框的列表框 |
GetDroppedControlRect | 取得组合框中可见(已经下拉)的列表框的屏幕坐标 |
GetDroppedState | 检测组合框的列表框是否可见(是否已经下拉) |
SetExtendedUI | 选择风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框中的列表框的缺省用户接口或扩展用户接口 |
GetExtendedUI | 检测组合框的用户接口是缺省的还是扩展的 |
GetLocale | 取得组合框的定位标记 |
SetLocale | 设置组合框的定位标记 |
字符串操作AddString | 在组合框的列表框的列表末尾添加一个字符串,或在具有CBS_SORT风格的的列表框中按次序所在的位置插入一个字符串 |
DeleteString | 删除组合框中的列表框中的一个字符串 |
InsertString | 在组合框的列表框中插入一个字符串 |
ResetContent | 删除组合框的列表框和编辑控件中的所有项 |
Dir | 在组合框的列表框中添加文件名的列表 |
FindString | 在组合框的列表框中查找具有指定前缀的第一个字符串 |
FindStringExact | 在组合框的列表框中查找具有与指定字符串完全匹配的第一个字符串 |
SelectString | 在组合框的列表框中查找字符串,找到后选中它,并把它拷贝到编辑控件中 |
可覆盖的函数DrawItem | 当自定义的组合框的某个可视特性改变时,由主程序调用 |
MeasureItem | 当创建一个自定义的组合框时,由主程序调用以检测组合框的维数 |
CompareItem | 由主程序调用以检测在有序的自定义组合框中新项所在的位置 |
DeleteItem | 从自定义的组合框中删除一个列表项时,由主程序调用 |
◆ CTreeCtrlCObject |
└CCmdTarget |
└CWnd |
└CTreeCtrl |
一个“treeview控件”是一个用来显示项的层次列表的窗口,比如一个文档中的标题,索引中的项,或磁盘中的文件和目录。每一个项都包括一个标签和一个可选的位图图像,每一个项还有一个与其相关的子项的列表。单击一个项,用户可以展开或缩进该项的相关子项的列表。CTreeCtrl类提供了Windows通用treeview控件的性能。这个控件(也就是CTreeCtrl类)只对运行在Windows95和WindowsNT3.51或更高版本下的程序来说是可用的。
#include请参阅:CImageList
CTreeCtrl类成员
构造
CTreeCtrl | 构造一个CTreeCtrl对象 |
Create | 创建一个treeview控件并将它与一个CTreeCtrl对象连接 |
属性GetCount | 获取与一个treeview控件相关联的tree项的数目 |
GetIndent | 获取一个treeview项对它的父项的偏移(以像素表示) |
SetIndent | 设置一个treeview项对它的父项的偏移(以像素表示) |
GetImageList | 获取与一个treeview控件相关联的图像列表的句柄 |
SetImageList | 设置与一个treeview控件相关联的图像列表的句柄 |
GetNextItem | 获取与指定的关系匹配的下一个treeview项 |
ItemHasChildren | 如果指定项有子项则返回非零值 |
GetChildItem | 获取一个指定treeview项的子项 |
GetNextSiblingItem | 获取指定treeview项的下一个兄弟项 |
GetPrevSiblingItem | 获取指定treeview项的前一个兄弟项 |
GetParentItem | 获取指定treeview项的父项 |
GetFirstVisibleItem | 获取指定treeview项的第一个可视项 |
GetNextVisibleItem | 获取指定treeview项的下一个可视项 |
GetPrevVisibleItem | 获取指定treeview项的前一个可视项 |
GetSelectedItem | 获取当前被选择的treeview项 |
GetDropHilightItem | 获取一次拖放操作的目标 |
GetRootItem | 获取指定treeview项的根 |
GetItem | 获取一个指定treeview项的属性 |
SetItem | 设置一个指定treeview项的属性 |
GetItemState | 返回一个项的状态 |
SetItemState | 设置一个项的状态 |
GetItemImage | 获取与一个项相关联的图像 |
SetItemImage | 设置与一个项相关联的图像 |
GetItemText | 返回一个项的文本 |
SetItemText | 设置一个项的文本 |
GetItemData | 返回与一个项关联的32位的应用程序指定值 |
SetItemData | 设置与一个项关联的32位的应用程序指定值 |
GetItemRect | 获取一个treeview项的边界矩形 |
GetEditControl | 获取用来编辑指定treeview项的编辑控件的句柄 |
GetVisibleCount | 获取与一个treeview项关联的可视tree项的编号 |
GetToolTips | 获取一个treeview控件使用的子ToolTip控件的的句柄 |
SetToolTips | 设置一个treeview控件的子ToolTip控件的的句柄 |
GetBkColor | 获取控件的当前背景颜色 |
SetBkColor | 设置控件的背景颜色 |
GetItemHeight | 获取treeview项的当前高度 |
SetItemHeight | 设置treeview项的当前高度 |
GetTextColor | 获取控件的当前文本颜色 |
SetTextColor | 设置控件的文本颜色 |
SetInsertMark | 设置一个treeview控件的插入标记 |
GetCheck | 获取一个tree控件项的核选状态 |
SetCheck | 设置一个tree控件项的核选状态 |
GetInsertMarkColor | 获取treeview用来绘制插入标记的颜色 |
SetInsertMarkColor | 设置treeview用来绘制插入标记的颜色 |
操作InsertItem | 在一个treeview控件中插入一个新项。 |
DeleteItem | 从一个treeview控件中删除一个项 |
DeleteAllItems | 从一个treeview控件中删除所有的项 |
Expand | 展开或收缩指定treeview项的子项 |
Select | 选择,在视中滚动,或重画一个指定的treeview项 |
SelectItem | 选择一个指定的treeview项 |
SelectDropTarget | 重画作为一次拖放操作的目标的tree项 |
SelectSetFirstVisible | 选择一个指定的treeview项作为第一个可视项 |
EditLabel | 现场编辑一个指定的treeview项 |
HitTest | 返回与CtreeCtrl关联的光标的当前位置 |
CreateDragImage | 为指定的treeview项创建一个拖动位图 |
SortChildren | 排序一个给定父项的子项 |
EnsureVisible | 确保一个treeview项在它的treeview控件中是可视的 |
SortChildrenCB | 使用一个由应用程序定义的排序函数来排列一个给定父项的子项 |
◆ CBitmapCObject |
└CGdiObject |
└CBitmap |
类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供了操纵位图的成员函数。使用CBitmap对象之前要先构造CBitmap对象,调用其中的一个初始化成员函数设置位图对象的句柄。此后就可以调用其它成员函数了。#include CBitmap类的成员
构造函数
初始化函数 LoadBitmap | 从应用的可执行文件中加载一个命名的位图资源来初始化位图对象 |
LoadOEMBitmap | 加载一个预定义的Windows位图来初始化位图对象 |
LoadMappedBitmap | 加载一个位图并把它的颜色映射为系统颜色 |
CreateBitmap | 用一个指定宽度、高度和位图模式的依赖于设备的内存位图初始化位图对象 |
CreateBitmapIndirect | 用BITMAP结构中给出的宽度、高度和模式(可以不指定)的位图初始化位图对象 |
CreateCompatibleBitmap | 用一个位图初始化对象使之与指定设备兼容 |
CreateDiscardableBitmap | 用一个可丢弃的、与指定设备兼容的位图初始化对象 |
属性 GetBitmap | 用位图信息填充BITMAP结构 |
operator HBITMAP | 返回CBitmap对象上的Windows句柄 |
操作 FromHandle | 给出WindowsHBITMAP结构的指针时,返回指向CBitmap对象的指针 |
SetBitmapBits | 把位图的位设为指定的值 |
GetBitmapBits | 拷贝指定位图的位值到指定的缓冲 |
SetBitmapDimension | 设置位图的宽度和高度(以0.1毫米为单位) |
GetBitmapDimension | 返回位图的宽度和高度。要求已经调用SetBitmapDimension设置位图的宽度和高度 |