C++实用教程课件-张荣梅 第4章对话框与控件

上传人:E**** 文档编号:89385846 上传时间:2019-05-24 格式:PPT 页数:104 大小:2.79MB
返回 下载 相关 举报
C++实用教程课件-张荣梅 第4章对话框与控件_第1页
第1页 / 共104页
C++实用教程课件-张荣梅 第4章对话框与控件_第2页
第2页 / 共104页
C++实用教程课件-张荣梅 第4章对话框与控件_第3页
第3页 / 共104页
C++实用教程课件-张荣梅 第4章对话框与控件_第4页
第4页 / 共104页
C++实用教程课件-张荣梅 第4章对话框与控件_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《C++实用教程课件-张荣梅 第4章对话框与控件》由会员分享,可在线阅读,更多相关《C++实用教程课件-张荣梅 第4章对话框与控件(104页珍藏版)》请在金锄头文库上搜索。

1、1,第六章 对话框与控件,河北经贸大学 信息技术学院 2008.9,VC+实用教程,2,教学目标,掌握常用控件的使用方法; 掌握模式对话框与非模式对话框的创建与使用; 了解通用对话框的使用方法; 了解系统的集成方法; 熟练掌握基于模式对话框的应用程序的编程方法和步骤。,3,本章主要内容,4.1 对话框概述 4.2 静态控件 4.3 编辑框 4.4 按钮类 4.5 列表框控件 4.6 列表视图(CListCtrl)控件 4.7 组合框 (CComboBox)控件 4.8 滚动类控件 4.9 通用对话框和消息对话框 习题四 实验指导四,4,4.1 对话框概述,对话框 对话框编辑器 对话框编程 控件

2、的创建与使用 访问控件,5,4.1.1 对话框,可视化的界面,包含:按钮、文本框、复选框等。 对话框是一个窗口,控件也是一个窗口 对话框的两种消息: WM_INITDIALOG:数据成员的初始化 WM_COMMAND:控件的消息 MFC对对话框的支持:对话框从CDialog基类中派生一个类, MFC的CDialog类封装了用于对话框的显示、关闭等常用操作的许多功能函数;MFC程序框架;ClassWizard类向导 公共对话框: P103 表4-1 标准对话框控件 表4-2 用于对话框控件的 CWnd成员函数 表4-3 模式对话框和无模式对话框,6,对话框的类型,1.模式对话框 弹出后,用户必须

3、作出相应得操作,否则不可以继续。 用途广。 2.无模式对话框 弹出后,一直保留在屏幕上,其他操作可继续,用的时候激活对话框即可。 两者的创建与显示方式不同: CPasswordDlg dlg1; Dlg1.DoModal();模式 CPasswordDlg *pDlg; pDlg-Create(IDD_DIALOG1,this); pDlg- ShowWindow(true);无模式 两者的终止函数不一样: Cdialog:EndDialog-模式 CWnd:DestroyWindow-无模式 所占内存空间不同: 模式对话框: 由系统自动分配内存,当对话框退出时,对话框对象自动删除。 无模式对

4、话框: 则需要用户来指定内存,退出时用户删除对话框对象,7,4.1.2 对话框编辑器,添加、选取、删除对话框控件; 改变控件的Tab键次序; 利用基准线、标尺及布局工具进行控件的布局; 测试所编辑的对话框的性能。,8,对话框编程示例-口令对话框,9,4.1.3 对话框编程,1. 添加对话框资源 在单文档项目Ex4-1中,Insert-resourc(ctrl+R)-Dialog 2. 编辑对话框属性 3. 向对话框内添加控件 添加/选取/控件的布局/测试对话框 4. 使用ClassWizard,为对话框资源创建一个新类 CPasswordDialog 为控件IDC_EDIT1关联成员变量 CS

5、tring m_Password 5. 在程序(Ex4_1.cpp )中使用模式对话框 #include “PasswordDialog.h“ bool CEx4_1App :InitInstance () CPasswordDialog Dlg; /声明CPasswordDialog类的对象 if ( Dlg.DoModal() != IDOK ) return false; /用户按下的不是“确认“按钮 if ( Dlg.m_Password != “123456“ ) /口令设为字符串“123456“ AfxMessageBox(“口令错误,确认后将退出程序“); return fals

6、e; Return true; 6.编译运行,10,4.1.4 控件的创建与使用,步骤如下: 将控件添加到对话框模板中 在对话框类中增加与控件相关联的数据成员 根据需要在对话框类中定义处理这些数据的成员变量 在对话框的OnInitDialog函数体中,为控件设置一些初始条件 在对话框的控件消息处理函数中,添加控件处理代码,11,2. 控件的通用属性,12,3. 控件的消息WM_COMMAND,MSG结构 typedef struct tagMSG HWND hwnd; /接收到消息的窗口句柄 UINT message; ./消息 WPARAM wParam; / 消息的附加信息,其含义取决于m

7、essage LPARAM lParam; /消息的附加信息,其含义取决于message DWORD time; /消息发送时的时间 POINT pt; /消息发送时,光标的屏幕坐标 MSG;,13,4.1.5 访问控件,关联变量-ClassWizard添加 控件变量控件类对象,一个窗口对象 m_MyBtn.SetWindowText(“这是一个命令按钮”); 值变量普通类型CString、int DDX对话数据交换与DDV对话数据验证 UpdateData(TRUE); /对于值变量,控件中的值传递变量 UpdateData(FALSE); 控件窗口指针 CEdit *pEdFirst=(C

8、Edit *) GetDlgItem(ID_FIRSTNAME);,例如 DDX_Text(pDX, IDC_PASSWORD_EDIT, m_password),14,访问控件的两种方法,采用控件关联变量 值变量 m_iA=10; UpdateData(false); 控件变量 m_EditA.SetWindowText(“10”); 获取控件窗口指针 CEdit* pEditName=GetDlgItem(IDC_NAME); pEditName-SetWindowText(“ZHANG”); SetDlgItemText(IDC_NAME, m_Name); GetDlgItemText

9、(IDC_NAME, m_Name);,15,4.2 CStatic类控件,静态控件概述 静态控件属性,16,1. CStatic类控件的概述,Static Text:静态文本作为标签 Group Box:分组框框架 Pictrue:静态图片显示位图、图标或分割其他控件 默认ID为IDC_STATIC 只有CStatic类控件的ID号可以重复,17,静态图片控件的General属性对话框,18,为对话框添加背景图片,使用Picture控件:方法简单,一定保证TabOrder为1 映射WM_CTLCOLOR消息,在OnCtlColor函数中返回一个图形刷子: 映射WM_PAINT消息,在OnPa

10、int函数中选入位图,为对话框设置一幅背景图(Bitmap)有几种最常用的方法:,19,Picture控件,WM_CTLCOLOR,WM_PAINT,20,HBRUSH CBitmapBKDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) if (nCtlColor = CTLCOLOR_DLG ) return (HBRUSH)m_BKBrush.GetSafeHandle(); return CDialog:OnCtlColor(pDC,pWnd,nCtlColor); ,CBitmapBKDlg:CBitmapBKDlg(CWnd*

11、pParent /*=NULL*/): CDialog(CBitmapBKDlg:IDD, pParent) CBitmap* pBitmap = new CBitmap; / ASSERT(pBitmap); pBitmap-LoadBitmap(IDB_BACKGROUD); m_BKBrush.CreatePatternBrush(pBitmap); delete pBitmap; ,利用对话框的OnCtlColor(),CTLCOLOR_BTN CTLCOLOR_DLG CTLCOLOR_EDIT CTLCOLOR_LISTBOX CTLCOLOR_MSGBOX CTLCOLOR_SC

12、RLLBAR CTLCOLOR_STATIC,Private: CBrush m_BKBrush,21,void CxxxDlg:OnPaint() CPaintDC dc(this); / device context for painting CRect rc; GetClientRect( /释放 ,利用对话框的OnPaint(),22,CDC绘图操作,CDC:BitBlt 从源设备环境拷贝一幅位图到当前设备环境 BOOL BitBlt ( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DW

13、ORD dwRop ); CDC:StretchBlt 从源设备环境(矩形)拷贝一幅位图到当前设备环境(矩形),如果必要,延伸或压缩 BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );,23,4.3 编辑框,概述 属性和风格 基本操作 编辑控件的通知消息,24,CEdit类控件的操作,口令设置 用来输入和编辑文本 单行文本 多行文本 Multiline,25,CEdit类控件的属

14、性,Multiline Number Want return Password Read-only Uppercase Lowercase,26,CEdit类控件的方法,口令设置: SetPasswordChar(#); 选择文本 输入/输出文本 -DDX技术,为编辑框添加值变量,通过使用UpdateData()完成控件与变量之间的数据传送。 -定义CEdit类的对象或对象指针(P168) CWnd:SetWindowText(); CWnd: GetWindowText();,27,CEdit类控件的方法,CanUndo() Clear() Copy() Cut() EmptyUndoBuf

15、fer() GetFirstVisibleLine() GetModify() GetPasswordChar() GetRect() GetSel(),LimitText() LineFromChar() LineLength() LineScroll() Paste() ReplaceSel() SetModify() SetPasswordChar() SetReadOnly() SetSel() Undo(),28,CEdit类控件的消息,EN_CHANGE EN_ERRSPACE EN_HSCROLL EN_KILLFOCUS EN_MAXTEXT EN_SETFOCUS EN_UP

16、DATE EN_VSCROLL,29,4.4 按钮类(CButton)控件,按钮类控件概述 按钮类的消息 示例,30,CButton类控件的概述,命令按钮(Pushbuttons) 单选按钮(Radiobuttons) 复选按钮(Checkboxes),31,命令按钮,事件: BN_CLICKED 方法: SetWindowText(字符串) ShowWindow(SW_SHOW/ SW_HIDE); EnableWindow(false/true);,32,例4.2 一元二次方程求解,33,例4.2一元二次方程求解,void CEx4_2Dlg:OnButton1() / TODO: Add your control notification handler code here UpdateData()

展开阅读全文
相关资源
相关搜索

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

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号