收藏 分享(赏)

vc第9章 控件.ppt

上传人:dreamzhangning 文档编号:5753032 上传时间:2019-03-15 格式:PPT 页数:60 大小:1.27MB
下载 相关 举报
vc第9章 控件.ppt_第1页
第1页 / 共60页
vc第9章 控件.ppt_第2页
第2页 / 共60页
vc第9章 控件.ppt_第3页
第3页 / 共60页
vc第9章 控件.ppt_第4页
第4页 / 共60页
vc第9章 控件.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、第九章 对话框应用程序和控件,2019/2/7,内容提要,概述 基于对话框的应用程序 各种控件的使用,9.1. 概述,2019/2/7,控件是Windows 图形用户界面的主要组成部分之一,用户通过操作控件对象完成与应用程序之间的交互。控件的使用集中体现了Windows 系统面向对象的特点,2019/2/7,控件工具栏,控件接受的消息 主要有单击、双击 和字符输入等,9.2 基于对话框的应用程序,概述,应用程序的主窗口:CDialog派生类对象 可由Visual C+的应用向导自动生成 对话框(Dialog)实际上也是一个窗口 CDialog类是CWnd类的派生类。,对话框设计,从MFC编程的

2、角度来看,一个对话框由两部分组成: 1. 对话框模板资源:对话框模板用于指定对话框的形状、所用控件及其分布。 2. 对话框类:对话框类用来实现对话框的功能。,2019/2/7,对话框设计,对话框模板设计和对话框类设计 1. 向项目中添加对话框模板资源; 2. 编辑对话框模板资源,加入所需的控件; 3. 从CDialog类派生对话框类,加入与各控件对应的数据成员; 4. 在消息响应函数中添加对话框对象的应用代码。,2019/2/7,对话框的初始化,对话框的初始化 1. 构造函数:针对对话框的数据成员进行初始化。 2. OnInitDialog:WM_INITDIALOG消息处理函数。在OnIni

3、tDialog()函数中做一些影响对话框外观的初始化工作。,2019/2/7,对话框的数据交换机制(DDX),控件与用户的数据交流过程: 1. 在对话框类中加入与控件对应的数据成员; 2. 通过数据交换(DDX)确定其与控件的数据交换关系。 MFC提供了CDataExchange类来实现对话框类与控件之间的数据交换(DDX)。,2019/2/7,Dialog Data Exchange,CWnd:UpdateData BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); initialized (FALSE) or retrieved (TRUE).

4、,2019/2/7,对话框的数据交换机制(DDX),数据交换机制通过CDialog:DoDataExchange()函数来完成,其原型为:virtual void DoDataExchange ( CDataExchange* pDX );其中参数pDX为指向CDataExchange类对象的指针,框架使用该对象建立数据交换内容。,2019/2/7,对话框的数据交换机制(DDX),数据交换函数 void DDX_Text ( CDataExchange* pDX, int nIDC, float参数pDX:指向CDataExchange对象的指针; 参数nIDC:对话框对象中的编辑控件的标识符

5、; 参数value:对话框中的数据成员的引用。,2019/2/7,对话框的数据交换机制(DDX),编辑框控件 void DDX_Text ( CDataExchange* pDX, int nIDC, int,2019/2/7,9.3 按钮控件,按钮控件及其应用,创建按钮控件 CButton类的成员函数Create负责创建按钮控件,该函数的原型为:BOOL Create ( LPCTSTR lpszCaption, / 指定按钮显示的正文 DWORD dwStyle, / 按钮的风格 const RECT,按钮控件及其应用,创建按钮控件 1、按钮控件消息映射宏 ON_BN_CLICKED、ON

6、_BN_DOUBLECLICKED 2、常见的按钮控件 复选框:常用于只有两种完全相反状态的情况下; 单选按钮:适用于同一组属性相同的数据中选一个 数据; 下压式按钮:适用于消息的发送; 分组框:没有太多的操作,只是在窗口中划分区域 范围。,程序举例: CButton *pButton = new CButton(); CRect rt(10,10,70,30); pButton-Create(“确定”, WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,rt, this,IDB_DEMO);,2019/2/7,按钮控件举例,2019/2/7,按钮控件举例,1、可视化设计,定

7、义好各个控件的ID值,与相应的变量绑定。,2019/2/7,按钮控件举例,2、控件ID宏定义 #define IDC_ZHANGSAN 1000 #define IDC_LISI 1001 #define IDC_WANGWU 1002 #define IDC_STUDENT 1003 #define IDC_TEACHER 1004 #define IDC_WORKER 1005 注意:同一组中的单选按钮的ID值必须连续;同一组中的单选按钮关联同一个整型变量;每组的第一个单选按钮设置Group属性。,2019/2/7,注意:同一组中的单选按钮的ID值必须连续;同一组中的单选按钮关联同一个整型

8、变量;每组的第一个单选按钮设置Group属性。思考:若添加新的Radio Button控件,如何指定其分组?,2019/2/7,9.4 滚动条控件,滚动条控件-CScrollBar类,滚动条是一个交互式的、高度可视化的控件它包括一个滑块、滚动条的两端的按钮等。,滚动条控件与属于窗口的滚动条是不一样的,处于窗口的滚动条是由该窗口创建、管理和释放的,滚动条控件是由用户创建、管理和释放的,滚动条可以通过通知代码来创建,也可以用对话框资源模板来创建,创建与初始化滚动条类,30,创建CScrollBar对象的一般步骤: (1) 用C+关键字new和构造函数CScrollBar()为一个ScrollBar

9、类分配一个实例。 (2) 初始化CScrollBar对象,将一个Windows滚动条赋予它,并用Create( )方法设置参数和样式。 BOOL Create( DWORD dwStyle, const RECT,滚动条控件-成员函数,void SetScrollRange( int nMinPos, int nMaxPos, BOOL bRedraw = TRUE ); / 设置滚动范围 void GetScrollRange( LPINT lpMinPos, LPINT lpMaxPos) const; / 查询滚动范围 int SetScrollPos( int nPos, BOOL b

10、Redraw = TRUE ); / 设置滑动块位置 int GetScrollPos() const; / 查询滑动块位置,2019/2/7,程序举例: CScrollBar *pMyScroll = new CScrollBar( ); CRect rt(10,10,120,30); pMyScroll-Create(WS_CHILD|WS_VISIBLE |SBS_VERT, rt, this,IDS_DEMO);/ 设置滚动范围pMyScroll-SetScrollRange(SB_VERT,- 100,100);/ 设置滑动块位置pMyScroller-SetScrollPos(0)

11、;,2019/2/7,应用举例,2019/2/7,本例演示滚动条控件的使用方法,拖动滑块时调整RGB宏的参数值,以文本和实际颜色的方式显示调整结果。,滚动条操作 void CDemoDlg:OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 说明:UINT nSBCode-滚动条动作标识 SB_LINELEFT SB_LINERIGHT SB_PAGELEFT SB_PAGERIGHT SB_THUMBTRACK SB_LINEDOWN SB_LINEUP SB_PAGEDOWN SB_PAGEUP,2019/2/7,9.5 静

12、态控件,静态控件的特点,一般情况下静态控件不发送消息。 实际应用中,需要静态文本能够象超文本那样响应用户的输入,向应用程序发送控件消息。,要在创建静态控件时加入SS_NOTIFY样式,该样式允许静态控件向其父窗口发送WM_COMMAND消息,该消息的字参数的低字节中包含静态控件的ID,高字节中包含通知码,静态控件应用举例,本例通过演示位图静态控件的使用方法,说明静态控件消息的强制生成与处理过程,当单击位图时,就报告该位图的尺寸。,39,主要步骤如下: 创建基于对话框的应用程序 导入一张BMP格式图片。假设位图资源名称为IDB_BITMAP1 向对话框上放上一个static控件,其ID为IDC_

13、STATIC_BMP,并设置控件为nofity风格,并添加CStatic类型成员m_bmp,无此风格,静态控件无法响应鼠标消息,(4) 在OnInitDailog函数中添加如下代码,设置控件为位图风格,并设置位图 OnInitDialog() / TODO: Add extra initialization herem_bmp.ModifyStyle(0,SS_BITMAP);HBITMAP hBmp=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1);m_bmp.SetBitmap(hBmp);return TRUE;

14、 ,(5) 响应鼠标单击静态控件的消息。为static控件添加BN_CLICKED消息的响应 OnStaticBmp() / TODO: Add your control notification handler code here BITMAP bmp;GetObject(m_bmp.GetBitmap(),sizeof(BITMAP), ,9.6 列表框控件,列表框控件,列表框经常用在对话框里,如用列表框选择文件名、目录等。列表框有一个预定义的键盘接口,用户可以用键盘上的箭头和PageUp或PageDown键在列表框中进行数据的选择,或通过适当的样式设置,允许与Shift或Ctrl键组合使

15、用。,列表框常应用于从众多数据中选某一项,44,MFC中CListBox类的层次结构,成员函数,获得项目数 int GetCount( ) const; 获得列表框文本 int GetText( int nIndex, LPTSTR lpszBuffer ) const; void GetText( int nIndex, CString,2019/2/7,成员函数,多选操作 int GetSelCount( ) const; int SetSel( int nIndex, BOOL bSelect = TRUE ); int GetSelItems( int nMaxItems, LPINT

16、 rgIndex ) const; 字符串操作 int AddString( LPCTSTR lpszItem ); int DeleteString( UINT nIndex ); int InsertString( int nIndex, LPCTSTR lpszItem ); void ResetContent( );,2019/2/7,成员函数,字符串操作 int SelectString(int nStartAfter, LPCTSTR lpszItem ); int Dir( UINT attr, LPCTSTR lpszWildCard );,2019/2/7,列表框控件举例,本

17、例演示列表框控件的使用方法。,2019/2/7,9.7 编辑框控件,编辑框控件,编辑框控件看起来是个非常简单的矩形窗口,但它具有许多功能,编辑框控件可以自带滚动条,显示多行文本。,编辑框控件,单行编辑框控件,多行编辑框控件,成员函数,选择字符 void SetSel( DWORD dwSelection, BOOL bNoScroll = FALSE ); void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE ); 全选:开始位置为0,结束位置为-1 获得选取位置 DWORD GetSel( ) const; voi

18、d GetSel( int,2019/2/7,低字节开始位置 高字节结束位置,成员函数,替换选择字符 void ReplaceSel( LPCTSTR lpszNewText, BOOL bCanUndo = FALSE ); 设定密码字符 void SetPasswordChar( TCHAR ch ); Ch:0,实际字符 设置只读 BOOL SetReadOnly( BOOL bReadOnly = TRUE );,2019/2/7,成员函数,剪贴板操作 void Copy( ); void Cut( ); void Paste( ); BOOL Undo( ); void Clear(

19、 );,2019/2/7,编辑框控件举例,“乘法器”示例程序,使用者在“乘数”或者“被乘数”编辑框中输入数字,程序可以计算乘法的结果。,2019/2/7,2019/2/7,9.8 组合框控件,组合框是两种预定义窗口的组合形式。在Windows编程中使用单一控件往往不能完全满足与用户交互的需要,最常见的组合框例子是对话框及与其相联系的静态文本和编辑框。,成员函数,选择组合框中的一项 int SetCurSel( int nSelect ); int GetCurSel( ) const; 选择编辑框中的字符 BOOL SetEditSel( int nStartChar, int nEndCha

20、r); DWORD GetEditSel( ) const; 获得字符串 int GetLBText( int nIndex, LPTSTR lpszText ) const;void GetLBText( int nIndex, CString,2019/2/7,成员函数,字符串操作 int AddString( LPCTSTR lpszString ); int DeleteString( UINT nIndex ); int InsertString( int nIndex, LPCTSTR lpszString ); void ResetContent( ); int SelectString(int nStartAfter,LPCTSTR lpszString); int Dir( UINT attr, LPCTSTR lpszWildCard );,2019/2/7,组合框控件举例,本例创建组合框控件,当单击向下按钮时,显示可选文件的名字。当选中某一项时,显示该项的名称 。,2019/2/7,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报