首页计算机计算机软件VisualC++ 06 第6章基于对话框的应用程序.pptx

06 第6章基于对话框的应用程序.pptx

页数:39页文件大小:297.8 KB来源: VisualC++ppt课件

本课件对应课程第6章基于对话框的应用程序,先说明对话框本质也是窗口、由模板资源与对话框类两部分构成,并给出设计步骤、初始化方式与DDX数据交换机制及DoDataExchange、DDX_Text的用法,随后依次讲解按钮、滚动条、列表框、编辑框与组合框五类标准控件的创建方法、常用成员函数与编程示例,配合数据采集模拟演示程序帮助理解控件与用户的交互。

第6章基于对话框的应用程序教学重点页,聚焦对话框设计、数据交换与按钮滚动条等标准控件
基于对话框应用程序概述页,指出用CDialog派生类对象作主窗口且对话框本质也是窗口
对话框组成说明页,指出对话框由对话框模板资源与对话框类两部分构成
查看本课件的文字版(共 39 页,供检索与复制)

第1页:第6章教学重点

  • 教学重点1
  • 对话框基本概念对话框设计
  • 对话框初始化
  • 数据交换机制2
  • 标准控件编程按钮
  • 滚动条
  • 列表框
  • 编辑框
  • 组合框等3
  • 定时器消息编程WM_TIMER

第2页:基于对话框的应用程序

6.1概述基于对话框的应用程序用CDialog派生类对象作为应用程序的主窗口。 基于对话框的应用程序框架可由Visual C++的应用向导自动生成,非常方便。 对话框(Dialog)实际上也是一个窗口。 在MFC中,对话框的功能被封装在CDialog类中,CDialog类是CWnd类的派生类。

第3页:对话框的组成

6.1概述从MFC编程的角度来看,一个对话框由两部分组成
1、对话框模板资源:对话框模板用于指定对话框的形状、所用控件及其分布。
  • 对话框类:对话框类用来实现对话框的功能。

第4页:对话框设计步骤

6.1概述对话框设计:对话框模板设计和对话框类设计1、向项目中添加对话框模板资源;

  • 编辑对话框模板资源,加入所需的控件;
  • 从CDialog类派生对话框类,加入与各控件对应的数据成员;
  • 在消息响应函数中添加对话框对象的应用代码。

第5页:对话框的初始化

6.1概述对话框的初始化1、构造函数:针对对话框的数据成员进行初始化。

  • OnInitDialog:WM_INITDIALOG消息处理函数。

在OnInitDialog()函数中做一些影响对话框外观的初始化工作。

第6页:数据交换机制DDX

6.1概述对话框的数据交换机制(DDX)控件与用户的数据交流过程:1、在对话框类中加入与控件对应的数据成员;

  • 通过数据交换(DDX)确定其与控件的数据交换关系。

MFC提供了CDataExchange类来实现对话框类与控件之间的数据交换(DDX)。

第7页:DoDataExchange函数

6.1概述对话框的数据交换机制(DDX)数据交换机制通过CDialog::DoDataExchange()函数来完成,其原型为

virtual void DoDataExchange (CDataExchange* pDX ); 其中参数pDX为指向CDataExchange类对象的指针,框架使用该对象建立数据交换内容。

第8页:DDX_Text函数

6.1概述对话框的数据交换机制(DDX)---数据交换函数

void DDX_Text ( CDataExchange* pDX,int nIDC, float&value ); 其中:参数pDX:指向CDataExchange对象的指针; 参数nIDC:对话框对象中的编辑控件的标识符; 参数value:对话框中的数据成员的引用。

第9页:对话框与控件

6.1概述---控件对话框与控件是密不可分的。 Windows提供了一批基本控件,如编辑控件(Edit Box)、组合框控件等,可解决大部分用户输入界面设计的需求。

第10页:例6-1演示程序

6.1概述---演示程序【例6-1】设计数据采集模拟应用程序。

本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。

第11页:例6-1设计要求

6.1概述---演示程序【例6-1】设计数据采集模拟应用程序,设计要求如下:1、使用定时器模拟产生实时数据;

  • 显示曲线,可以定制曲线颜色、线型;

第12页:6.2 按钮控件

6.2按钮控件

本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。

第13页:创建按钮控件

6.2按钮控件---创建按钮控件

CButton类的成员函数Create负责创建按钮控件,该函数的原型为:BOOL Create (LPCTSTR lpszCaption, 

第14页:按钮消息与类型

  • 6.2按钮控件---创建按钮控件1
  • 按钮控件消息映射宏ON_BN_CLICKED
  • ON_BN_DOUBLECLICKED2
  • 常见的按钮控件复选框:常用于只有两种完全相反状态的情况下
单选按钮
适用于同一组属性相同的数据中选一个数据;
下压式按钮
适用于消息的发送;
分组框
没有太多的操作,只是在窗口中划分区域范围。

第15页:创建按钮示例

6.2按钮控件---创建按钮控件程序举例:CButton *pButton = new CButton();

CRect rt(10,10,70,30); pButton->Create(“确定”,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,rt, this, IDB_DEMO);

第16页:按钮控件编程

6.2按钮控件---按钮控件编程演示按钮控件的使用方法,重点说明单选按钮的使用方法。

本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。

第17页:单选按钮使用要点

6.2按钮控件---单选按钮同一组中的单选按钮的ID值必须连续; 同一组中的单选按钮关联同一个整型变量; 每组的第一个单选按钮设置Group属性。

第18页:6.3 滚动条控件

  • 6.3滚动条控件滚动条是一个交互式的
  • 高度可视化的控件,它包括一个滑块
  • 滚动条的两端的按钮等

滚动条控件与属于窗口的滚动条是不一样的。

  • 滚动条控件是由用户创建
  • 管理和释放的,属于窗口的滚动条是由该窗口创建
  • 管理和释放的

第19页:CScrollBar类

6.3滚动条控件---CScrollBar类

本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。

第20页:创建与初始化滚动条

6.3滚动条控件---创建与初始化创建CScrollBar对象的一般步骤:(1)用C++关键字new和构造函数CScrollBar()为一个ScrollBar类分配一个实例。 (2)初始化CScrollBar对象,将一个Windows滚动条赋予它,并用Create( )方法设置参数和样式。

BOOL Create( DWORD dwStyle,const RECT&rect, CWnd* pParentWnd,UINT nID );

第21页:滚动条成员函数

6.3滚动条控件---成员函数

void SetScrollRange( int nMinPos, int nMaxPos,BOOL bRedraw = TRUE );//查询滚动范围int SetScrollPos( int nPos,BOOL bRedraw = TRUE );//查询滑动块位置

第22页:创建滚动条示例

6.3滚动条控件程序举例:CScrollBar *pMyScroll = new CScrollBar( );

CRect rt(10,10,120,30); pMyScroll->Create(WS_CHILD|WS_VISIBLE|SBS_VERT, rt, this,IDS_DEMO);

第23页:设置滚动范围示例

6.3滚动条控件程序举例:pMyScroll-> SetScrollRange(SB_VERT,-100,100);

第24页:滚动条编程演示

6.3滚动条控件---滚动条编程演示滚动条控件的使用方法,拖动滑块时调整RGB宏的参数值,改变曲线的颜色。

本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。

第25页:滚动条操作函数

6.3滚动条控件---应用举例---滚动条操作void CDemoDlg::OnHScroll(UINT nSBCode,UINT nPos, CScrollBar* pScrollBar)说明:UINT nSBCode---滚动条动作标识SB_THUMBTRACKSB_LINELEFT SB_LINERIGHTSB_PAGELEFT SB_PAGERIGHTSB_LINEDOWN SB_LINEUPSB_PAGEDOWN SB_PAGEUP

第26页:6.4 列表框控件

6.4列表框控件列表框常应用于从众多数据中选某一项。 列表框经常用在对话框里,列表框有一个预定义的键盘接口,用户可以用键盘上的箭头和PageUp或PageDown键在列表框中进行数据的选择,或通过适当的样式设置,允许与Shift或Ctrl键组合使用。

第27页:CListBox类

6.4列表框控件---CListBox类

本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。

第28页:创建列表框

6.4列表框控件---成员函数

BOOL Create(DWORD dwStyle,const RECT&rect,CWnd* pParentWnd,UINT nID);

第29页:列表框成员函数(一)

6.4列表框控件---成员函数

int AddString( LPCTSTR lpszItem ); int DeleteString( UINT nIndex ); int InsertString( int nIndex, LPCTSTR lpszItem ); void ResetContent( ); int SelectString(int nStartAfter, LPCTSTR lpszItem );

第30页:列表框成员函数(二)

6.4列表框控件---成员函数

void GetText( int nIndex, CString&rString ) const; int GetSel( int nIndex ) const; int GetCurSel( ) const; int SetCurSel( int nSelect );

第31页:Dir函数attr取值

Dir函数attr取值

列表框Dir函数属性attr取值对照表
ValueID
0x0010DDL_DIRECTORY
0x0000DDL_READWRITE
0x0020DDL_ARCHIVE
0x0001DDL_READONLY
0x4000DDL_DRIVES
0x0002DDL_HIDDEN
0x8000DDL_EXCLUSIVE
0x0004DDL_SYSTEM

6.4列表框控件---成员函数int Dir( UINT attr, LPCTSTR lpszWildCard );attr:可以是下列值的任意组合ValueIDValueID0x0010DDL_DIRECTORY0x0000DDL_READWRITE0x0020DDL_ARCHIVE0x0001DDL_READONLY0x4000DDL_DRIVES0x0002DDL_HIDDEN0x8000DDL_EXCLUSIVE0x0004DDL_SYSTEMlpszWildCard: Points to a file-specification string.

第32页:6.5 编辑框控件

6.5编辑框控件---CEdit类编辑框控件看起来是个非常简单的矩形窗口,但它具有许多功能,编辑框控件可以自带滚动条,显示多行文本。

第33页:创建编辑框

6.5编辑框控件---成员函数

BOOL Create(DWORD dwStyle,const RECT&rect,CWnd* pParentWnd,UINT nID);

第34页:编辑框成员函数(一)

6.5编辑框控件---成员函数

void SetSel( int nStartChar, int nEndChar,BOOL bNoScroll = FALSE ); void GetSel( int&nStartChar,int&nEndChar ) const; void ReplaceSel( LPCTSTR lpszNewText,BOOL bCanUndo = FALSE );

第35页:编辑框成员函数(二)

6.5编辑框控件---成员函数

BOOL SetReadOnly( BOOL bReadOnly = TRUE ); void Copy( ); void Cut( ); void Paste( ); BOOL Undo( ); void Clear( );

第36页:6.6 组合框控件

6.6组合框控件组合框是两种预定义窗口的组合形式。 在Windows编程中使用单一控件往往不能完全满足与用户交互的需要,最常见的组合框例子是列表框及与其相联系的静态文本和编辑框。

第37页:创建组合框

6.6组合框控件---成员函数

BOOL Create(DWORD dwStyle,const RECT&rect,CWnd* pParentWnd,UINT nID);

第38页:组合框成员函数(一)

6.6组合框控件---成员函数

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 );

第39页:组合框成员函数(二)

6.6组合框控件---成员函数

int SetCurSel( int nSelect ); int GetCurSel( ) const; BOOL SetEditSel( int nStartChar,int nEndChar );