MFC提供类 CDialog作为对话框服务的基类,类 CDialog将对请框模板与使 用对话框时必需熟悉的几种类方法进行封装。对于对话框中发送消息的的 控件,我们可创建相应的消息处理程序。MFC编译器提供的框架工具使得 我们把对话框中的控件消息映像到派生类的类函数变得简单、快捷。对话 框数据映像函数使用专门的值初始化对话框中的控件,接着检索数据并使 之有效。大多数对话框需要类成员变量来跟踪用户的输入,这些数据在数 据映像中使用,它们在对话控件与类变量之间自动映像数据。 为创建对话框,首先建立 CDialog对象,然后创建和显示对话框窗口我们 有两种选择:一种方法是调用函数 CDialog: DaModar10来创建有模式对话 框窗口,另一种方法是调用函数 CDialog: Create来创建无模式对话框窗口, 在上述两种情况之下,对话框对象先初始化,然后创建对话框以及它的控 件 类 CDialog成员函数 Create使用两种重载原形,最常用的一种如下: Create(UINT nIDTemplate, CWnd pArent Wnd=NULL 其中,参数 nIDTemplate是一个对话框模板的标识符, 参数 pParentWnd是对话框所属的父窗口
MFC 提供类CDialog作为对话框服务的基类,类CDialog将对话框模板与使 用对话框时必需熟悉的几种类方法进行封装。对于对话框中发送消息的的 控件,我们可创建相应的消息处理程序。MFC编译器提供的框架工具使得 我们把对话框中的控件消息映像到派生类的类函数变得简单、快捷。对话 框数据映像函数使用专门的值初始化对话框中的控件,接着检索数据并使 之有效。大多数对话框需要类成员变量来跟踪用户的输入,这些数据在数 据映像中使用,它们在对话控件与类变量之间自动映像数据。 为创建对话框,首先建立CDialog对象,然后创建和显示对话框窗口我们 有两种选择:一种方法是调用函数CDialog::DoModal()来创建有模式对话 框窗口,另一种方法是调用函数CDialog::Create()来创建无模式对话框窗口, 在上述两种情况之下,对话框对象先初始化,然后创建对话框以及它的控 件。 类CDialog成员函数Create()使用两种重载原形,最常用的一种如下: Create(UINT nIDTemplate, CWnd * pParentWnd=NULL); 其中,参数nIDTemplate是一个对话框模板的标识符, 参数pParentWnd是对话框所属的父窗口
对话框中的数据交换和数据检查 MFC提供两种方法在对话框中进行数据交换和数据检查( Dialog data Exchange/Dialog Data Validation),数据交换和数据检查的基本思想是 将某一变量和对话框中的一个控件窗口进行关联,然后通过调用BOOL Updatedata( BOOL bSaveandvalidate=TRUE)来指示MFC将变量中数 据放入控件窗口还是将控件窗口中数据取到变量中并进行合法性检查。 在进行数据交换时一个控件窗口可以和两种类型的变量相关联, 种是控件( Control)对象,比如说按钮控件窗口可以和一个 CButton对 象相关联,这种情况下我们可以通过该对象直接控制控件窗口,当然我 们可以使用 GetDlgltem( DC CONTROL D)来得到窗口对象指针; 种是内容对象,比如说输入框可以和一个 CString对象关联,也可以和 个UN类型变量关联,这种情况下我们可以直接设置或获取窗口中 的输入内容
对话框中的数据交换和数据检查 MFC提供两种方法在对话框中进行数据交换和数据检查(Dialog Data Exchange/Dialog Data Validation),数据交换和数据检查的基本思想是 将某一变量和对话框中的一个控件窗口进行关联,然后通过调用BOOL UpdateData( BOOL bSaveAndValidate = TRUE )来指示MFC将变量中数 据放入控件窗口还是将控件窗口中数据取到变量中并进行合法性检查。 在进行数据交换时一个控件窗口可以和两种类型的变量相关联,一 种是控件(Control)对象,比如说按钮控件窗口可以和一个CButton对 象相关联,这种情况下我们可以通过该对象直接控制控件窗口,当然我 们可以使用GetDlgItem(IDC_CONTROL_ID)来得到窗口对象指针;一 种是内容对象,比如说输入框可以和一个CString对象关联,也可以和 一个UINT类型变量关联,这种情况下我们可以直接设置或获取窗口中 的输入内容
而数据检查是在一个控件窗口和一个内容对象相关联时 在存取内容时对内容进行合法性检查,比如说当一个输入 框和一个 CString对象关联时,我们可以设置检查 CString的 对象的最长最小长度,当输入框和一个UⅠNT变量相关联时 我们可以设置检査UⅠNT变量的最大最小值。在BOOL Updatedata( BOOL bSaveandvalidate=TRUE)被调用后, 合法性检査会自动进行,如果无法通过检查MFC会弹出消 息框进行提示,并返回 FALSE 设置 DDX/DDV在 Visual o+中非常简单, Class Wizard 可以替我们完成所有的工作,我们只需要打开 Class Wizard 并选中 Member variables页,我们可以看到所有可以进行关 联的控件窗口ID列表,双击一个ID会弹出一个添加变量的 对话框,然后填写相关的信息后按下确定按钮就可以了。 然后选中刚才添加的变量在底部的输入框中输入检查条件
而数据检查是在一个控件窗口和一个内容对象相关联时 在存取内容时对内容进行合法性检查,比如说当一个输入 框和一个CString对象关联时,我们可以设置检查CString的 对象的最长/最小长度,当输入框和一个UINT变量相关联时 我们可以设置检查UINT变量的最大/最小值。在BOOL UpdateData( BOOL bSaveAndValidate = TRUE )被调用后, 合法性检查会自动进行,如果无法通过检查MFC会弹出消 息框进行提示,并返回FALSE。 设置DDX/DDV在Visual C++中非常简单,ClassWizard 可以替我们完成所有的工作,我们只需要打开ClassWizard 并选中Member Variables页,我们可以看到所有可以进行关 联的控件窗口ID列表,双击一个ID会弹出一个添加变量的 对话框,然后填写相关的信息后按下确定按钮就可以了。 然后选中刚才添加的变量在底部的输入框中输入检查条件
Windows标准控件 MFC提供了一组与 Microsoft windows所提供的标准控 件窗口相对应的类。这些类主要有:静态类、按钮类、 编辑控件类、滚动条类、列表框类和组合框类等。每个 控件类都封装了一个 Windows控件,并提供了与基本控件 之间的成员函数用户接口。使用一个控件对象的成员函 数,就可以获取和设置控件的值或状态,并响应由该控 件送给其父窗口(通常为一个对话框)的各种标准消息。 控制是 Control的意译,又叫控件,以下我们对控制和 控件不加区分。除了上述标准的 Windows控制之外, MFC还提供了以位图作标签的按钮等控制
Windows标准控件 MFC 提供了一组与 Microsoft Windows 所提供的标准控 件窗口相对应的类。这些类主要有:静态类、按钮类、 编辑控件类、滚动条类、列表框类和组合框类等。每个 控件类都封装了一个Windows控件,并提供了与基本控件 之间的成员函数用户接口。使用一个控件对象的成员函 数,就可以获取和设置控件的值或状态,并响应由该控 件送给其父窗口(通常为一个对话框)的各种标准消息。 控制是Control 的意译,又叫控件,以下我们对控制和 控件不加区分。除了上述标准的Windows 控制之外, MFC还提供了以位图作标签的按钮等控制
静态文本控件 静态文本控件的功能比较简单,可作为显示字符串、图标、位图 用。创建一个窗口可以使用成员函数: BOOL CStatic: Create(LPctsTrlpszText, DWORD dw Style, const RECT& rect, CWnd pParentWnd, UINTnID=0xffff) 其中, dwStyle将指明该窗口的风格,除了子窗口常用的风格 WS CHILD, WS VISIBLE外,我们可以针对静态控件指明专门的风格 SS CENTER SS LEFTSS RIGHT指明字符显示的对齐方式 SS GRAYRECT显示一个灰色的矩形 SS NOPREFIX如果指明该风格,对于字符&将直接显示,否则 &将作为转义符,&将不显示而在其后的字符将有下划线,如果需要 直接显示&必须使用&&表示 SS BITMAP显示位图 SS ICON显示图标 SS CENTERIMAGE图象居中显示 利用成员函数 Set window text设置控件显示的文本 Get WindowText得 到控件当前显示的文本,利用成员函数 Setcon设置控件显示的图标 Celcon得到控件当前显示的图标,利用成员函数 Set Bitmap设置控 件显示的位图, TbiTmap得到控件当前显示的位图
静态文本控件 静态文本控件的功能比较简单,可作为显示字符串、图标、位图 用。创建一个窗口可以使用成员函数: BOOL CStatic::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff ); 其中,dwStyle将指明该窗口的风格,除了子窗口常用的风格 WS_CHILD,WS_VISIBLE外,我们可以针对静态控件指明专门的风格。 l SS_CENTER,SS_LEFT,SS_RIGHT 指明字符显示的对齐方式。 l SS_GRAYRECT 显示一个灰色的矩形 l SS_NOPREFIX 如果指明该风格,对于字符&将直接显示,否则 &将作为转义符,&将不显示而在其后的字符将有下划线,如果需要 直接显示&必须使用&&表示。 l SS_BITMAP 显示位图 l SS_ICON 显示图标 l SS_CENTERIMAGE 图象居中显示 利用成员函数SetWindowText 设置控件显示的文本GetWindowText 得 到控件当前显示的文本,利用成员函数SetIcon设置控件显示的图标 GetIcon得到控件当前显示的图标,利用成员函数SetBitmap 设置控 件显示的位图,GetBitmap得到控件当前显示的位图