MFC常用类介绍

  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

当自定义的列表框的风格改变时由框架调用

posted on 2012-04-22 16:29  lzm风雨无阻  阅读(5534)  评论(0编辑  收藏  举报

导航