CStatic
CObject
└CCmdTarget
└CWnd
└CStatic
CStatic类提供了一个Windows静态控件的性能。一个静态控件用来显示一个文本字符串,框,矩形,图标,光标,位图,或增强的图元文件。它可以被用来作为标签,框,或用来分隔其它的控件。一个静态控件不接收输入,也不提供输出;但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父有关设备点击的消息。创建一个静态控件分两步。首先,调用构造函数来构造此CStatic对象,然后调用Create成员函数来创建此静态控件并将它与该CStatic对象连接。如果你是在一个对话框中创建了一个静态控件(通过一个对话框资源),则当用户关闭这个对话框时,此CStatic对象被自动销毁。如果你是在一个窗口中创建了一个CStatic对象,则必须由你来销毁它。在一个窗口的堆栈中创建的CStatic对象将自动被销毁。如果你是使用new函数在堆中创建CStatic对象,则当你使用完后,必须调用delete来销毁这个CStatic对象。
#include<afxwin.h>
请参阅:
CWnd,CButton,CComboBox,CEdit,CListBox,CScrollBar,CDialog
CStatic类成员
构造
CStatic
构造一个CStatic对象
初始化
Create
创建Windows静态控件并将它与该CStatic对象连接
操作符
SetBitmap
指定要在此静态控件中显示的位图
GetBitmap
获取先前用SetBitmap设置的位图的句柄
SetIcon
指定一个要在此静态控件中显示的图标
GetIcon
获取先前用SetIcon设置的图标的句柄
SetCursor
指定要显示在此静态控件中的光标图像
GetCursor
获取先前用SetCursor设置的光标图像的句柄
SetEnhMetaFile
指定要显示在此静态控件中的增强的图元文件
GetEnhMetaFile
获取先前用SetEnhMetaFile设置的增强图元文件的句柄
CEdit
CObject
└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<afxwin.h>
请参阅:
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格式时才进行插入
CButton
CObject
└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<afxwin.h>
请参阅:
CWnd,CComboBox,CEdit,CListBox,CScrollBar,CStatic,CBitmapButton,CDialog
CButton类的成员
构造函数
CButton
构造一个CButton对象
初始化函数
Create
创建Windows按钮控件并在CButton对象上应用
操作
GetState
检索按钮控件的选中状态、加亮状态和获得焦点状态
SetState
设置按钮控件的加亮状态
GetCheck
检索按钮控件的选中状态
SetCheck
设置按钮控件的选中状态
GetButtonStyle
检索按钮控件的风格
SetButtonStyle
设置按钮控件的风格
GetIcon
检索此前调用SetIcon设置的图标句柄
SetIcon
指定一个在按钮上显示的图标
GetBitmap
检索此前调用SetBitmap设置的位图的句柄
SetBitmap
设置在按钮上显示的位图
GetCursor
检索此前调用SetCursor设置的光标图像的句柄
SetCursor
设置在按钮上显示的光标图像
可覆盖的函数
DrawItem
可以覆盖它来绘制自定义的CButton对象
CFileDialog
CObject
└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++程序员指南”中的“常用对话类”。
#include<afxdlgs.h>
CFileDialog类的成员
数据成员
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消息
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_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<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
CCheckListBox
CObject
└CCmdTarget
└CWnd
└CListBox
└CCheckListBox
类CCheckListBox实现了Windows复选列表框。复选列表框显示项的一个列表,例如文件名列表。列表中的每项都有一个复选框。
CCheckListBox只用于自定义的控件,列表中不仅仅包含字符串文本。
当然简单的复选列表框可以只有字符串文本和相应的复选框。实际上也可以没有文本。例如可以是一个位图以及相应于复选框的列表。
创建自己的复选列表框,要从类CCheckListBox派生一个子类。然后为它写一个构造函数,并调用成员函数Create。
如果复选列表框是缺省形式的(由左边带有固定大小的复选框的字符串组成),就可以用缺省的CCheckListBox::DrawItem函数绘制复选列表框。否则就要覆盖函数CListBox::CompareItem、CCheckListBox::DrawItem以及CCheckListBox::Meas-ureItem。
可以在对话框模板或程序代码中直接创建一个复选列表框。
#include<afxwin.h>
请参阅:CListBox
CCheckListBox类的成员
构造函数
CCheckListBox
构造一个CCheckListBox对象
Create
创建Windows复选列表框并应用到CCheckListBox对象上
属性函数
SetCheckStyle
设置控件的复选框的风格
GetCheckStyle
获取控件的复选框的风格
SetCheck
设置某个项的复选框的状态
GetCheck
取得某个项的复选框的状态
Enable
允许或禁止存取某个项
IsEnabled
检测某个项是否允许存取
OnGetCheckPosition
由框架调用,取得某个项的复选框的状态
可覆盖的函数
DrawItem
当自定义的列表框的某个可视属性改变时由框架调用
MeasureItem
当自定义的列表框的风格改变时由框架调用