2022年面向对象程序设计- .pdf





《2022年面向对象程序设计- .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计- .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2009/10/301Institute of Artificial Intelligence and Robotics对话框是 Windows程序设计的一个重要部分;Windows程序的重要用户界面组件;在用户与应用程序之间建立有效的交互。第11章 对话框西安交通大学人工智能与机器人研究所Institute of Artificial Intelligence and Robotics11.1 对话框就是一个特殊的窗口获取用户的输入显示软件的输出只处理两种消息WM_INITDIALOG 消息第11章对话框西安交通大学人工智能与机器人研究所WM_COMMAND消息消息发送时间: 对话框窗口在内
2、存中创建之后,但是在屏幕上显示之前。作用举例: 子控件都初始化时使用。属于通知类消息,需要注意还需要进行消息参数的解析。Institute of Artificial Intelligence and Robotics11.2MFC封装对话框类 CDialog第11章 对话框CObjectCCmdTarget西安交通大学人工智能与机器人研究所MFC将对话框模板 与使用对话框时必须熟悉的几种方法进行了封装。 MFC编译器提供的框架工具使得把对话控件映像到派生类的类方法变得快捷。对于发消息的对话框中的子控件 ,可以创建相应的消息处理程序 。CWndCDialogInstitute of Artif
3、icial Intelligence and Robotics消除一个对话框, EndDialog函数对话框中的 IDOK,IDCANCEL按钮模态与非模态注意,非模态对话框的OnCancel函数中调用 EndDialog仅仅隐藏却不销毁窗口。所以要想销毁窗口,就要在OnCancel第11章对话框方法说明DoModal()调用模态 对话框直到对话框关闭之后才返回EndDialog()关闭一个模态对话框,或隐藏 无模态对话框GetDefID()得到对话框默认按钮控件的标识符ID(若有)GotoDlgCtrl()设定输入焦点 (Focus) 到一个指定控件MapDialogRect()映像矩形对话
4、框单位到显示单位NextDlgCtrl()对话框中移动输入焦点到下一个控件西安交通大学人工智能与机器人研究所函数中调用 DestroyWindows函数。模态对话框的调用, DoModal函数非模态对话框的调用,Create函数(一般先采用 new在堆顶分配)。非模态对话框不会启动新的消息循环,所以其和应用程序公用一个消息循环,这样就不会垄断用户的输入。g()PrevDlgCtrl()对话框中移动输入焦点到上一个控件SetDefID()设置对话框默认按钮控件SetHelpID()为对话框设定上下文有关的帮助标识符IDOnCancel关闭对话框 (Close按钮或 ESC 键)。CDialog基
5、本实现,使DoModal() 返回 IDCANCEL 值。OnInitDialog处理对话框初始化。OnOK()关闭对话框, CDialog 基本实现,使 DoModal() 返回 IDOK值。OnSetFont()指名用来绘制对话框文本的字体。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 2009/10/302Institute of Artificial Intelligence and Robotics11.3模态对话
6、框与非模态对话框模态与非模态模态对话框:不允许应用程序中其它任何窗口存在输入焦点,焦点只限于模态对话框,并且一直保留到对话框关闭位置。非模态对话框:允许应用程序中其它窗口存在输入焦点。第11章 对话框西安交通大学人工智能与机器人研究所其它不同之处:不同模态非模态创建方法1.在栈中分配 auto2.DoModal() 方法显示1.堆顶分配 new2.Create()方法显示EndDialog()关闭对象隐藏对象删除方法EndDialog()PostNcDestroy()消息循环独立消息循环与其它程序共享Institute of Artificial Intelligence and Roboti
7、cs11.4对话框模板对话框的实现必须具备两个部分:对话框模板(对话框的布局)对话框类的实现(对话框的功能)对话框模板:第11章对话框西安交通大学人工智能与机器人研究所在 SDK 中以文本形式描述 ,在 VC 中以 可视化形式 表示对话框以及其子控件都以ID号来进行标识模板通常存储于 Resource.rc文件当中。(工程资源描述文件)Institute of Artificial Intelligence and RoboticsIDD_MFCDEMO_DIALOGDIALOGEX 0, 0, 275, 194STYLEDS_SETFONT| DS_MODALFRAME | DS_FIXED
8、SYS| WS_POPUP | WS_VISIBLE| WS_CAPTION | WS_SYSMENUEXSTYLEWS_EX_APPWINDOWCAPTION MFCDemoFONT 8,MS Shell Dlg, 0, 0,0 x1BEGINCONTROLCheck Box,IDC_CHECK1,Button,BS_AUTOCHECKBOX| WS_TABSTOP,48,100,82,10PUSHBUTTONPush Button,IDC_BUTTON1,48,124,50,1411.4对话框模板:文本模板第11章 对话框西安交通大学人工智能与机器人研究所GROUPBOXGroup Box
9、,IDC_STATIC,28,18,121,76CONTROLGreen,IDC_RADIO1,Button,BS_AUTORADIOBUTTON,48,34,68,10CONTROLRed,IDC_RADIO2,Button,BS_AUTORADIOBUTTON,48,52,72,10CONTROLBlue,IDC_RADIO3,Button,BS_AUTORADIOBUTTON,48,74,71,10SCROLLBARIDC_SCROLLBAR1,246,23,11,15,SBS_VERTEDITTEXTIDC_EDIT1,167,24,80,13,ES_AUTOHSCROLLSCROLL
10、BARIDC_SCROLLBAR2,7,156,261,15EDITTEXTIDC_EDIT2,162,92,92,17,ES_AUTOHSCROLLEDITTEXTIDC_EDIT3,165,117,87,19,ES_AUTOHSCROLLENDInstitute of Artificial Intelligence and Robotics11.4对话框模板:可视化模板第11章对话框西安交通大学人工智能与机器人研究所名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12
11、 页 - - - - - - - - - 2009/10/303Institute of Artificial Intelligence and Robotics11.5对话框的数据管理MFC为用户在对话控件中输入和验证数据提供了巧妙的机制CDataExchange 类负责管理对话框的数据交换和验证对话框数据交换( DDX ):系统自动的收集相关的数据)简单的验证数据的格式有第11章 对话框西安交通大学人工智能与机器人研究所对话框数据验证( DDV):简单的验证数据的格式、有效性。(复杂的数据验证需要程序员添加专门的验证用代码)Institute of Artificial Intellige
12、nce and Robotics11.6对话数据交换(DDX )对话框数据交换( DDX)pDX是一个指向对象 CDataExchange 的指针, ControlID是控件的标识符/ 将控件与对应的数据进行了关联DDX_type( pDX,ControlID,Data)第11章对话框西安交通大学人工智能与机器人研究所的标识符, Data是输入控件的数据数据交换的方向:CWnd:UpdateData(BOOL)的方向内存中的变量屏幕上的控件CWnd:UpdateData(FALSE )CWnd:UpdateData(TRUE )Institute of Artificial Intellige
13、nce and Robotics11.6对话数据交换(DDX )对话框数据交换对 话 框 初 始 化 CDialog:OnInitDialog() 会 默 认 调 用CWnd:UpdateData(FALSE) 从类成员变量中把数据传送到他们所代表的对话框控件。第11章 对话框西安交通大学人工智能与机器人研究所当 用 户 单 击 OK按 钮 时 , CDialog:OnOK() 默 认 作 用 调 用CWnd:UpdateData(TRUE) 方法,触发CDialog:DoDataExchange()来透明的更新成员变量。以上两个步骤都是系统自动调用的,对于程序员和用户都是透明。Institu
14、te of Artificial Intelligence and Robotics11.6对话数据交换(DDX )全局方法说明DDX_CBIndex()管理在组合框控件和INT数据成员之间的 INT数据传递DDX_CBString()管理在对组合框的编辑控件与数据成员CString之间CString数据传递DDX_Check()管理在复选框控件与数据成员INT 之间的 INT数据传递DDX Control()第11章对话框西安交通大学人工智能与机器人研究所DDX_Control()管理在子类控件和CWnd数据成员之间的数据传递DDX_LBIndex()管理在列表框控件和数据成员INT 之间的
15、 INT数据传递DDX_LBStringExact()管理在列表控件的编辑控件与对话框数据成员CString、窗体试图、控件、视图对象之间的数据传递DDX_LBString()管理列表框控件的编辑控件与数据成员CString之间的CString数据的传递DDX_Radio()管理在单选控件组与INT数据成员之间的 INT数据传递DDX_Scroll()管理在滚动条和 INT数据成员之间的 INT数据传递DDX_Text()管理在编辑控件和数据成员CString之间的 INT 、UINT、LONG 、DWORD 、CString、FLOAT 或DOUBLE 数据传递名师资料总结 - - -精品资
16、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 2009/10/304Institute of Artificial Intelligence and Robotics对话框数据验证MFC为专门的书写代码者提供了自动的数据验证 。这一验证通过另一个 全局函数集 完成。这些函数通常显示一个描述验证问题的消息框并且在 违11.7对话数据验证(DDV )第11章 对话框西安交通大学人工智能与机器人研究所例控件设焦点 。当用户输入的数据是无效的或者在可接受值范围以
17、外时,它们也提出异常。注意:对任何一个给出的控件调用DDV函数时,必须直接跟在调用DDX函数之后,当在 MFC应用程序中使用DDV 时,可以利用类库的另一些很好的特性。Institute of Artificial Intelligence and Robotics11.7对话数据交换(DDX )全局方法说明DDV_MaxChars()证明与一个给出的值参有关的控件中的字符计数不超过指定值DDV_MinMaxByte()证明在控件中给出的BYTE 值在最小和最大值之间DDV_MinMaxDouble()证明在控件中给出的Double值在最小和最大值之间第11章对话框西安交通大学人工智能与机器人
18、研究所DDV_MinMaxDWord()证明在控件中给出的DWORD 值在最小和最大值之间DDV_MinMaxFloat()证明在控件中给出的FLOAT 值在最小和最大值之间DDX_MinMaxInt()证明在控件中给出的INT值在最小和最大值之间DDX_MinMaxLong()证明在控件中给出的LONG 值在最小和最大值之间DDX_MinMaxUnsigned()证明在控件中给出的Unsigned值在最小和最大值之间Institute of Artificial Intelligence and Robotics第11章 对话框11.8系统公用对话框公用对话框类为应用程序提供了一致性和完整性
19、的对话框公用集,实现了高度的可重用性。提供包括标准 Windows公用对话框。提供在应用程序中实现它们的简易方式西安交通大学人工智能与机器人研究所提供在应用程序中实现它们的简易方式。Institute of Artificial Intelligence and Robotics第11章对话框11.8系统公用对话框对话类型描述Color让用户选择颜色并创建用户的颜色Find让用户指定一个查找串Font让用户指定一类字体Open让用户指明可被打开的文件的位置和名称西安交通大学人工智能与机器人研究所PageSetup让用户来创建页选项用来来打印操作,包括页头、页边、页尺寸和页源Print让用户来设
20、置打印工作参数,包括打印质量、打印范围和复制数Replace让用户指明字符串用于查找一替换操作中SaveAs让用户指明要存的文件位置和名字名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 2009/10/305Institute of Artificial Intelligence and RoboticsMF快本西安交通大学人工智能与机器人研究所适MF视Institute of Artificial Intelligence
21、and RoboticsCButton类具有四种样式复下单一组互不排斥的选择对于选择的确认一组相互排斥的选择12.1按钮类 CButton第12章对话控件西安交通大学人工智能与机器人研究所组CCmdTargetCObjectCWndCButton定义组的内关系Institute of Artificial Intelligence and Robotics样式宏意义BS_3STATE复选框,三态(选中,未选中,无效)BS_CHECKBOX复选框,只用两种状态(选中,未选中)BS_DEEPUSHBUTTON 下压按钮,可用 Enter键进行快速选择BS GROUPBOX第12章 对话控件12.1
22、按钮类 CButton :按钮的样式风格西安交通大学人工智能与机器人研究所BS_GROUPBOX组框BS_LEFTTEXT文字在按钮左边(只用于复选框)BS_OWNERDRAW可自己绘制按钮样式*BS_PUSHBUTTON下压按钮BS_RADIOBUTTON单选按钮Cbutton:SetButtonStyle( UINT nStyle, BOOL bRedraw=TRUE)通过样式宏的使用,允许程序在执行期间动态改变按钮的状态和风格Institute of Artificial Intelligence and Roboticsclass CButton : public CWndDECLAR
23、E_DYNAMIC(CButton)/ Constructorspublic:CButton();virtual BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,const RECT&rect, CWnd* pParentWnd, UINTnID);/ AttributesUINT GetState() const;void SetState(BOOL bHighlight);int GetCheck() const;void SetCheck(int nCheck);UINT GetButtonStyle() const;id SBSl (UIN
24、TSlbR dTRUE)CButton西安交通大学人工智能与机器人研究所void SetButtonStyle(UINT nStyle, BOOLbRedraw = TRUE);HICON SetIcon(HICON hIcon);HICON GetIcon() const;HBITMAP SetBitmap(HBITMAP hBitmap);HBITMAP GetBitmap() const;HCURSOR SetCursor(HCURSORhCursor);HCURSOR GetCursor();/ Overridables (for owner draw only)virtual voi
25、d DrawItem(LPDRAWITEMSTRUCTlpDrawItemStruct);public:virtual CButton();protected:virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 2009/10/306Institute of Artificial Intelligence and
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年面向对象程序设计- 2022 面向 对象 程序设计

限制150内