书签 分享 收藏 举报 版权申诉 / 91
上传文档赚钱

类型第5章对话框及常用控件课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5177702
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:91
  • 大小:303KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第5章对话框及常用控件课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    对话框 常用 控件 课件
    资源描述:

    1、 对话框是应用程序中最重要的界面元素之一,是与用户交互的重要手段。它是一个特殊的窗口,其特殊是因为对话框中往往有多个控件(控件是用于和用户交互控件是用于和用户交互的基本单元的基本单元。控件常用于对话框中,另外它还可由其它的父窗口所拥有以完成其它的任务。),如文本框、编辑框、列表框、滚动条等。用户通过与对话框中各控件的交互,起到输入/输出数据或完成其它任务的目的。第五章第五章 对话框及常用控件对话框及常用控件从MFC编程编程的角度角度看,一个对话框对话框(Dialog Box)由两部分组成由两部分组成:1.对话框对话框(资源)(资源)模板模板 对话框(资源)模板用于指定对话框的控件及其分布,Wi

    2、ndows根据对话框模板来创建并显示对话框。2.对话框类对话框类 对话框类用来实现对话框的功能,由于对话框行使的功能各不相同,因此需要从CDialog类派生一个新类,以完成特定的功能。相应地,对话框的设计包括对话框模板的设计和对话框类的设计两个主要方面。与 对 话 框 有 关 的 消 息 主 要 包 括WM_INITDIALOG消息和控件通知消息。在对话框创建时将发出WM_INITDIALOG消息(初始化对话框消息),该消息的消息处理函数是OnInitDialog。OnInitDialog函数的主要用函数的主要用途是初始化对话框。途是初始化对话框。对话框的控件对话框的控件会向对话框发送控件通知

    3、消息会向对话框发送控件通知消息。CObject CCmdTarget CWnd CDialog CCommonDialog(通用对话框)CColorDialog(颜色对话框)CFileDialog(文件对话框)CFindReplaceDialog(查找替换对话框)CPageSetupDialog(页面设置对话框)CFontDialog(字体对话框)CPrintDialog(打印对话框)MFC的的部分对话框类继承关系如下:部分对话框类继承关系如下:MFC的CDialog类封装了用于对话框显示、关闭等常用操作的许多成员函数。5.1.1模式对话框和无模式对话框模式对话框和无模式对话框1.模式对话框模

    4、式对话框 模式对话框模式对话框(Modal Dialog Box)是指是指当对话框出现时,它的父窗口将暂时失效,只当对话框出现时,它的父窗口将暂时失效,只有处理完对话框所要求的动作后,才会把控制有处理完对话框所要求的动作后,才会把控制权交回给父窗口权交回给父窗口。5.1 对话框的使用对话框的使用模式对话框一般创建过程:Step 1:用CDialog:CDialog构造器创建模式对话框;Step 2:用CDialog:DoModal函数显示对话框();Step 3:用CDialog:EndDialog函数终止对话框。CDialog:CDialog构造函数:格 式:C D i a l o g(U

    5、I N T n I D T e m p l a t e,C W n d*pParentWnd=NULL);功能:构造一个基于资源的模式对话框。参数:nIDTemplate-对话框模板资源ID号;pParentWnd-指向父窗口的指针,若为NULL,则对话框窗口为应用程序主窗口。CDialog:DoModal函数:格式:virtual int DoModal();功能:激活并显示模式对话框,操作完成后返回对话框结果。返回:返回一个int值(IDOK或IDCANCEL),若创建失败,则返回0。CDialog:EndDialog函数:格式:void EndDialog(int nResult);功能

    6、:退出模式对话框。参数:nResult-为DoModal函数的返回值。2.无模式对话框无模式对话框/共存式对话框共存式对话框无模式对话框无模式对话框(Modaless Dialog Box)又称共存式对话框,它不不会令父窗口失效,因此无模式对话框出现时,使用者可以继续执行会令父窗口失效,因此无模式对话框出现时,使用者可以继续执行父窗口的工作。父窗口的工作。无模式对话框一般创建过程:Step 1:用CDialog:Create函数创建无模式对话框();Step 2:用CWnd:ShowWindow函数显示对话框();Step 3:用CWnd:DestroyWindow函数终止对话框。注:由于函数

    7、CDialog:OnOK()和CDialog:OnCancel()调用EndDialog(),所以需要重载CDialog:OnOK()和CDialog:OnCancel();若按下Cancel按钮时,结束对话框,则在CDialog:OnCancel()中调用DestroyWindow()。CDialog:Create函数:格 式:B O O L C r e a t e(U I N T n I D T e m p l a t e,C W n d*pParentWnd=NULL);功能:创建一个无模式对话框。返回:若创建成功则返回非0。参数:nIDTemplate-对话框模板资源ID号;pPare

    8、ntWnd-指向父窗口的指针,若为NULL,则对话框窗口为应用程序主窗口。CWnd:ShowWindow函数:格式:BOOL ShowWindow(int nCmdShow);功能:显示窗口。返回:若窗口原可见,则返回非0;若窗口原隐藏,则返回0。参数:nCmdShow-规定如何显示CWnd窗口,常用取值有:SW_HIDE:隐藏窗口 SW_SHOWMINIMIZED:最小化窗口 SW_RESTORE:激活并显示窗口;若已最小化或最大化,则恢复 其原大小和位置 SW_SHOW:激活窗口并以其当前大小和位置显示窗口 SW_SHOWMAXIMIZED:最大化窗口 。CWnd:DestroyWindo

    9、w函数:格式:virtual BOOL DestroyWindow();功能:删除与CWnd对象连接的窗口。返回:若删除成功,则返回非0值。CDialog:OnOK函数:格式:virtual void OnOK();功能:当单击模式无模式对话框中Ok按钮(ID号为IDOK的按钮)时调用该函数。可重载该函数以实现特定的Ok按钮动作。CDialog:OnCancel函数:格式:virtual void OnCancel();功能:当单击模式无模式对话框中Cancel按钮(ID号为IDCANCEL的按钮)时调用该函数。可重载该函数以实现特定的Cancel按钮动作。5.1.2使用对话框编辑器使用对话框

    10、编辑器操作方法:Insert-Resource-Dialog-New。1.打开对话框编辑器。打开对话框编辑器。2.控件工具栏中各控件含义。控件工具栏中各控件含义。3.控件布局工具栏。控件布局工具栏。5.1.3对话框的编程对话框的编程程序例程序例:用MFC AppWizard创建一SDI程序,程序运行后单击OUSE弹出一模式对话框。(见操作演示)主要步骤:Step1:用MFC AppWizard创建一SDI程序(设工程名为CH51A);Step2:Insert-Resource-Dialog-New添加对话框资源;Step3:View-ClassWizard为对话框派生一个类CMyDlg;此步操

    11、作完成时要生成一对文件:MYDLG.H 和MYDLG.CPP。Step4:View-ClassWizard选择视图类CXXXView,添加OnLButtonDown处理函数;Step5:在OnLButtonDown函数中添加以下代码:void CXXXView:OnLButtonDown(UINT nFlags,CPoint point)/TODO:Add your message handler code here and/or call defaultCMyDlg dlg;/生成并构造一个对话框对象dlg.DoModal();/显示对话框CView:OnLButtonDown(nFlags

    12、,point);Step6:在CXXXView.CPP文件开始的#include后添加以下代码:#include MyDlg.h程序例程序例:为模式对话框增加一个命令按钮,单击该按钮弹出一消息框。按钮控件的常用消息有两个:按钮控件的常用消息有两个:、BN_CLICKED(单击按钮消息)当用户单击按钮时,由按钮控件发送给对话框。当用户单击按钮时,由按钮控件发送给对话框。、BN_DOUBLECLICKED(双击按钮消息)当用户双击按钮时,由按钮控件发送给对话框。当用户双击按钮时,由按钮控件发送给对话框。程序例:程序例:用MFC AppWizard创建一SDI程序,程序运行后单击OUSE弹出一无模式

    13、对话框。(见操作演示)主要步骤:Step1:用MFC AppWizard创建一SDI程序(设工程名为CH51B);Step2:Insert-Resource-Dialog-New添加对话框资源;Step3:View-ClassWizard为对话框派生一个类CMyDlg;此 步 操 作 完 成 时 要 生 成 一 对 文 件:M Y D L G.H 和MYDLG.CPP。Step4:View-ClassWizard选择视图类CH51BView,添加OnLButtonDown处理函数;Step5:在OnLButtonDown函数中添加以下代码:void CCH51BView:OnLButtonDo

    14、wn(UINT nFlags,CPoint point)/TODO:Add your message handler code here and/or call defaultCMyDlg*pDlg=new CMyDlg;pDlg-Create(IDD_DIALOG1,this);pDlg-ShowWindow(SW_SHOW);CView:OnLButtonDown(nFlags,point);Step6:在CH51BView.CPP文件开始的#include后添加以下代码:#include MyDlg.h 从上面两种不同对话框的例子可以看出:模式对话框在显示时,未关闭窗口前其它窗口是不能成

    15、为活动窗口的;无模式对话框在显示时,未关闭窗口前其它窗口则是可以成为活动窗口的。控件(Control)是能够完成输入是能够完成输入/输出等特定功能的输出等特定功能的一种特殊窗口一种特殊窗口。系统定义的标准控件所对应的类一般是由CWnd派生的。5.2.1在对话框中创建和使用控件在对话框中创建和使用控件 控件的创建方式有两种:1、在对话框模板中用编辑器指定控件即将控件的父窗口指定为对话框。2、把控件看作任一窗口的子窗口,通过调用Create()函数来创建5.2 控件的创建和使用控件的创建和使用程序例:程序例:在本例中,可学到三种改变按钮控件标题的方法:法法1:通过ClassWizard 增加资源I

    16、DD_DIALOG1的CButton类对象 CButton m_MyBtn;在OnInitDialog()中添加:m_MyBtn.SetWindowText(“欢迎欢迎”);/将按钮控件标题设为 /“欢迎”CWnd:SetWindowText函数:格式:void SetWindowText(LPCTSTR lpszString);功能:设置窗口或控件的标题。参数:lpszString-指向用作新标题或控件文本的CString对象或字符串。法法2:通过CWnd:GetDlgItem获取按钮控件对象指针实现 设新增按钮控件的ID号为IDC_BUT T O N 1,则与m_MyBtn.SetWind

    17、owText(“欢迎欢迎”);等价的代码如下:GetDlgItem(IDC_BUTTON1)-SetWindowText(“欢欢迎迎”);CWnd:GetDlgItem函数:格式:CWnd*GetDlgItem(int nID);功能:获取指定控件或子窗口的指针。参数:nID-控件或子窗口的ID标识符。法法3:在对话框模板对话框模板中,通过设定控件属性对话框实现 5.2.2控件的数据交换和数据验证控件的数据交换和数据验证DDV/DDX 技术技术DDX(dialog data exchange)DDV(dialog data validation)UpdateData()函数实现控件的控制程序例

    18、(P200)UpdateData();M_mybtn.SetWindowText(m_strEdit)5.2.3 控件的通用属性控件的通用属性控件的属性对话框的修改5.2.4 控件的消息控件的消息在控件的使用和编程过程中,用户可以向控件发送消息来完成特定的任务,或者是根据控件产生的消息来执行所需要的程序代码。当控件的状态发生改变时,控件会向其父窗口发送消息,该消息称当控件的状态发生改变时,控件会向其父窗口发送消息,该消息称为为通知消息。每个消息均由一个MSG结构来记录。对一般控件一般控件,通知消息通常是WM_COMMAND。MSG结构中记录的该消息的几个常用参数说明如下:HIWORD(wPar

    19、am)-控件ID标识符LOWORD(wParam)-控件的具体消息代码(如命令按钮有BN_CLICKED和BN_DOUBLECLICKED两个)lParam-控件的句柄5.2.5 如何在程序中加载其它的应用程序如何在程序中加载其它的应用程序?有时,需要在一个应用程序中加载另一个应用程序。在VC中,有三个API函数WinExec()、ShellExecute()、CreateProcess()可以实现这种应用目的。WinExec最简单,原型如下:WinExec(LPCSTR lpCmdLine,/程序文件的路径 UINT FuCmdShow/窗口显示方式 );如,加载C盘windows文件夹下的

    20、notepad.exe记事本程序,代码如下:WinExec(c:windowsnotepad.exe,SW_SHOWMAXIMIZED);运行EMAIL或网址 在某消息映射中添加实现EMAIL运行char szMailAddress80;strcpy(szMailAddress,mailto:);ShellExecute(NULL,open,szMailAddress,NULL,NULL,SW_SHOWNORMAL);在某消息映射中添加实现网址启动char szMailAddress80;strcpy(szMailAddress,http:/);ShellExecute(NULL,open,s

    21、zMailAddress,NULL,NULL,SW_SHOWNORMAL);可将控件分为三类:1、一般控件一般控件/标准控件标准控件控件名称 MFC类静态控件 CStatic()按钮控件 CButton()(包括:命令按钮命令按钮、单选钮单选钮、复选框复选框)编辑控件 CEdit()列表框 CListBox()组合框 CComboBox()滚动条 CScrollBar()5.3 Window常用控件常用控件 2、新增的公共控件新增的公共控件Windows支持18种新的公共控件,VC的MFC类库提供相应的类以方便程序员编程。控件名称 MFC类 动画控件 CAnimateCtrl扩展组合框控件 C

    22、ComboBoxEx (比一般的组合框控件多一项功能:支持图象列表)日期时间控件 CDateTimeCtrl标题控件 CHeaderCtrl热键控件 CHotKeyCtrl(它是一个窗口,用于显示用户输入的热键,如Ctrl+Shift+F8。使用热键可迅速地完成指定的操作。它常用于对话框中。)图象列表 CImageListIP地址控件 CIPAddressCtrl列表控件 CListCtrl月历控件 CMonthCalCtrl进展条控件 CProgressCtrl丰富编辑控件 CRichEditCtrl(是一个窗口,用户可以在其中输入和编辑文字,同时允许用户在编辑时使用丰富的格式特性,就像Wo

    23、rd中使用脚注Footnote等一样。它既支持文字和图形格式,也可包括嵌入的OLE对象。)滑动条控件 CSliderCtrl()旋转按钮控件 CSpinButtonCtrl()状态栏控件 CStatusBarCtrl标签控件 CTabCtrl工具栏控件 CToolBarCtrl工具栏提示控件 CToolTipCtrl树形控件 CTreeCtrl 3、ActiveX控件控件ActiveX(Active the Internet:激活Internet)控件控件:是MS提出的一组使用COM(Component Object Model:组件对象模型)使得软件组件在网络环境中进行交互的技术集。另外,我

    24、们还可编写代码定制自己的控件(Custom Control)。5.3.1静态控件和按钮静态控件和按钮 1、静态控件静态控件静态控件的功能比较简单,可作为显示字符串、图标、位显示字符串、图标、位图图用。静态控件一般不接收用户输入,也不能被选择。在对话框的资源编辑器的控件工具栏中,属于静态控件的有:静态文本静态文本(Static Text)、成组框(Group Box)、静态图片(Picture)。成组框成组框(Group Box):是一个矩形框,其中有一组控件(如单选钮或复选框)。它可用于把具有公共用途的控件组织在一起。成组框不能被选中,应用程序也不能向它发送消息。静态图片静态图片(Pictur

    25、e)可将应用程序资源中的位图、图标等显示在该控件中。2、按钮、按钮事实上,Wndows可为我们提供4种按钮种按钮:命令按钮/按键按钮(Button)、单选钮(Radio Button)、复选框(Check Box)、自画按钮四种。MFC提供类CButton来实现按钮控件的功能。从对话框模板创建,只需向对话框类加入CButton类型的成员变量即可。(1)命令按钮命令按钮/按键按钮(Button)几乎所有的对话框都使用命令按钮,应用程序通常使用命令按钮启动某一操作。(2)单选钮单选钮(Radio Button)应用程序通常在成组框中使用单选按钮,用户可以在一组相关但又对立的选项中进行选择,在同一时

    26、刻只能选中其中一个。它通常有两种状态:选中选中(按钮上有黑点)和未选中未选中(没有黑点)。另外如果为三态单选钮,则还有禁止禁止状态(灰钮)。(3)复选框复选框(Check Box)应用程序通常在成组框中使用复选框,用户可以在一组相关但又独立的选项中进行选择,在同一时刻可以选择任意个选项。它通常有两种状态:选中(框中有)和未选中(没有)。另外如果为三态复选框,则还有禁止状态(灰框)。例:见教材P205图5.22。(4)自画按钮自画按钮对于手工创建,则首先要调用CButton()构造对象,然后再调用CButton:Create创建按钮控件,并将其连接到CButton对象。最典型的自画按钮就是位图按

    27、钮,它是用位图图象代替文字标签的按钮控件。位图按钮的作用与命令按钮相同。MFC提供的CButton的派生类的派生类CBitmapButton(位图按钮类)来实现位图按钮的功能,通过几个独立的位图分别代表按钮的松开松开(Up)、按下按下(Down)、获取获取输入焦点焦点(Focused)和禁止禁止(Disabled)状态。创建按钮CButton:Create成员函数:格式:BOOL Create(LPCTSTR lpszCaption,DWORD dwStyle,const RECT&rect,CWnd*pParentWnd,UINT nID);参数:lpszCaption-按钮上显示的文字;d

    28、wStyle-按钮风格,除了Windows风格可以使用外(如WS_CHILD|WS_VISUBLE|WS_BORDER)还有按钮专用的一些风格,常用的有:BS_CHECKBOX 复选框 BS_DEFPUSHBUTTON 默认命令按钮 BS_OWNERDRAW 自绘按钮 BS_PUSHBUTTON 命令按钮 BS_RADIOBUTTON 单选按钮 BS_3STATE 允许按钮有三种状态,即:选中,未选中,未定 Rect-窗口所占据的矩形区域;pParentWnd-父窗口指针;nId-该窗口的ID值。获取/改变按钮状态:通过调用int CButton:GetCheck得到当前是否被选中,返回0:未

    29、选中,1:选中,2:未定。调用void CButton:SetCheck设置当前选中状态。3、按钮的消息、按钮的消息BN_CLICKED:单击按钮消息;BN_DOUBLECLICKED:双击按钮消息。处理按钮消息:要处理按钮消息需要在父窗口中进行消息映射,映射宏为ON_BN_CLICKED(id,memberFun)id为按钮的ID值,就是创建时指定的nID值。处理函数原型为a fx_msg void memberFun();演示:演示:P205【例例Ex_Ctrls1】void CEx_CommCtrlsDlg:OnButton1()/TODO:Add your control notifi

    30、cation handler code hereUpdateData();if(!m_bEnabled)return;int nID=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4);if(nID=IDC_RADIO1)CEditDlg dlg;dlg.DoModal();if(nID=IDC_RADIO2)CListBoxDlg dlg;dlg.DoModal();if(nID=IDC_RADIO3)CComboDlg dlg;dlg.DoModal();if(nID=IDC_RADIO4)CScrollDlg dlg;dlg.DoModal();vo

    31、id CEx_CommCtrlsDlg:OnCheck1()/TODO:Add your control notification handler code hereUpdateData();for(int i=0;iEnableWindow(m_bEnabled);BOOL CEx_CommCtrlsDlg:OnInitDialog()/TODO:Add extra initialization hereCheckRadioButton(IDC_RADIO1,IDC_RADIO4,IDC_RADIO1);OnCheck1();return TRUE;/return TRUE unless y

    32、ou set the focus to a control4.技巧技巧-位图按钮举例位图按钮举例 位图按钮是以位图(而不是文本)作标题的按钮。可用CBitmapButton位图按钮类和CBitmapButton:AutoLoad()函数实现。一个CBitmapButton对象按钮对象按钮可以包含四幅位图四幅位图,即:松开(Up)、按下(Down)、聚焦(Focused)、禁止(disabled),其中第一幅位图是必须的。实现步骤:用对话框资源编辑器在对话框中放置一个命令按钮(Button),并选中Styles卡片中Owner_draw/自绘按钮复选框 为 按 钮 设 定 标 题 名 和 I D

    33、(如 I D 编 辑 框 输入:IDC_MYIMAGE,Caption编辑框输入:MYIMAGE)用资源编辑器生成四幅位图,并把位图资源ID设置成与按钮标题相对应的字符串ID 这里要注意位图资源不能用数字ID,而是使用字符串ID(即用双引号将ID标识符括起来),使用格式如下:按钮标题名U-松开(Up)位图 按钮标题名D-按下(Down)位图按钮标题名F-聚焦(Focused)位图按钮标题名X-禁止(disabled)位图 在 对 话 框 类 中 生 成 C B i t m a p B u t t o n 对 象(该 类 要 用#include)CBitmapButton m_BitmapBut

    34、ton;在 C D i a l o g:O n I n i t D i a l o g()函 数 中 调 用CBitmapButton:AutoLoad()函数实现位图与按钮的关联 此处代码如下:m_BitmapButton.AutoLoad(IDC_MYIMAGE,this);CBitmapButton:AutoLoad函数:格式:BOOL AutoLoad(UINT nID,CWnd*pParent);功能:初始化对话框中的按钮为位图按钮。参数:nID-按钮的ID号;pParent-指向父窗口的指针。建立位图按钮的消息处理机制,这样就可以使用位图按钮了 5.3.2编辑框(编辑框(Edit

    35、Box)Edit控件是用来接收用户输入和编辑文本的控件。1编辑控件的属性和风格编辑控件的属性和风格 见编辑框的属性对话框。2编辑框的常用操作编辑框的常用操作(1)文本、数字的设置和读取文本、数字的设置和读取 为使编辑控件允许输入和读取不同类型的数据,需要使用对话框数据交据交换DDX(Dialog Data eXchange)和数据验证DDV(Dialog Data Verification)技术。DDX技术技术的实质就是为控件建立一数据映射的实质就是为控件建立一数据映射,DDX接收接收CDataExchange类(该类提供上下文信息,它没有基类)中的信息中的信息,并将数据在指定控件和数据变量或

    36、CString对象之间传递。DDV技术技术的实质是验证数据的有效性,它主要验证数据是否在给的实质是验证数据的有效性,它主要验证数据是否在给定的最大值和最小值之间定的最大值和最小值之间。一旦数据超出了有效范围,DDV函数将显示一消息框,并在消息框中给用户提示合理的输入范围。DDX和和DDV的关键技术是的关键技术是DDX全局函数和全局函数和DDV全局函数(通常全局函数(通常DDV函数要与函数要与DDX函数成对出现)。函数成对出现)。CWnd:UpdateData成员函数:用法1:UpdateData(TRUE);/UpdateData();功能:将对话框中控件的数据传送至相关联的成员变量将对话框中

    37、控件的数据传送至相关联的成员变量。用法2:UpdateData(FALSE);功能:将对话框中控件相关联的成员变量的值传送至控件将对话框中控件相关联的成员变量的值传送至控件。(2)口令设置口令设置当编辑框控件设置口令形式时,用户输入的各字符都被一特殊的字符显示(该特殊字符叫口令字符),缺省的口令字符是星号“*”。应用程序可用CEdit:SetPassWordChar成员函数设置口令字符:格式:void SetPassWordChar(TCHAR ch);功能:设置或删除输入文本时显示在编辑控件中的口令字符。参数:ch-设定的口令字符,若为0则显示用户实际输入的字符。Edit控件口令字符也可通过

    38、该控件的Password属性设置,当Password属性设为True时,就会将输入的内容屏蔽为星号“*”。注:采用这里的方法设置口令存在漏洞,故此法只能用于一般的口令设置(漏洞:当把其Password属性设为True时,虽然我们看来都是星号,但程序中的Edit控件实际仍是用户输入的密码,应用程序可以获取该控件中的密码,其他应用程序也可以通过向Edit控件发送WM_GETTEXT或EM_GETLINE消息来获取Edit控件中的内容。黑客程序正是利用Edit控件的这个特性,当发现当前探测的窗口是Edit控件并且具有ES_PASSWORD属性值时,则通过SendMessage向此编辑控件窗口发送WM

    39、_GETTEXT或EM_GETLINE消息,这样Edit框中的内容就一目了然了。(3)选择文本选择文本 由于在编辑框中编辑文本时,用户可能选择要某一段文本,所以通过void CEdit:GetSel(int&nStartChar,int&nEndChar)得到用户选择的字符范围,通过调用void CEdit:SetSel(int nStartChar,int nEndChar,BOOL bNoScroll=FALSE)可以设置当前选择的文本范围,如果指定nStartChar=0、nEndChar=-1则表示选中所有的文本。void ReplaceSel(LPCTSTR lpszNewText,

    40、BOOL bCanUndo=FALSE)可以将选中的文本替换为指定的文字。此外编辑框还有一些和剪贴板有关的功能,void CEdit:Clear()删除选中的文本,void CEdit:Copy()可将选中的文本送入剪贴板,void CEdit:Paste()将剪贴板中内容插入到当前编辑框中光标位置,void CEdit:Cut()相当于Copy和Clear结合使用。4.编辑控件的常用消息编辑控件的常用消息当编辑框编辑框的文本被修改等事件发生时,将向父窗口发送一些消息,常用的消息消息如下:EN_CHANGE 编辑框中文本更新后产生此消息编辑框中文本更新后产生此消息(映射宏名:ON_EN_CHA

    41、NGE)EN_ERRSPACE 编辑框无法分配内存时产生此消息(映射宏名:ON_EN_ ERRSPACE)EN_KILLFOCUS/EN_SETFOCUS 在编辑框失去在编辑框失去/获取输入焦点时获取输入焦点时产生相应的消息产生相应的消息(映射宏名:ON_EN_KILLFOCUS/ON_EN_SETFOCUS)程序例:P209例Ex_Ctrls2程序主要代码附后BOOL CEditDlg:OnInitDialog()CDialog:OnInitDialog();/TODO:Add extra initialization herem_strAve=0.00;UpdateData(FALSE);

    42、return TRUE;/return TRUE unless you set the focus to a control /EXCEPTION:OCX Property Pages should return FALSEvoid CEditDlg:OnButton1()/TODO:Add your control notification handler code hereUpdateData();double ave=(double)(m_nScore1+m_nScore2+m_nScore3)/3.0;m_strAve.Format(%6.2f,ave);UpdateData(FALS

    43、E);5.3.3列表框(列表框(List Box)列表框用来列出许多项目供用户选择的控件。1列表框的风格列表框的风格 列表框按性质可分为单选(缺省)、多选、扩展多选、非选四种类型。单选列表框单选列表框(Single):用户一次只能选择一个选项;多选列表框多选列表框(Multiple):用户一次只能选择几个选项;扩展多选列表框扩展多选列表框(Extended):用户可用Mouse拖动或其它特殊组合键进行选择;非选列表框非选列表框(No):不提供选择功能。见教材P140图表。2列表框基本操作列表框基本操作在列表框被创建后,往往要添加、删除、改变或获取列表框中的列表项,该操作可调用ClistBox类

    44、成员函数实现。列表框的(列表列表)项项可用字符串标识或用索引索引确定(索引表明某项在列表框中的位置,它以0为基数,即:第一项索引为第一项索引为0,第二项索引为1,。)。(1)添加列表项添加列表项列表框创建时是一个空表,需要由用户添加或插入一些项。添加列表项可使用ClistBox:AddString成员函数:格式:int AddString(LPCTSTR lpszItem);功能:在列表框中添加字符串文本的一个列表项。若列表框未以LBS_SORT风格创建,则添加字符串到列表的尾部,否则插到列表中。返回:添加列表项在列表框中的索引。错误返回LB_ERR,空间不足返回LB_ERRSPACE。参数:

    45、lpszItem-列表项的文本字符串。CListBox:InsertString 用于将列表项插入到指定位置:格式:int InsertString(int nIndex,LPCTSTR lpszItem)功能:将字符串文本插入到指定位置。返回:字符串在列表框中插入位置的索引。错误返回LB_ERR,空间不足返回LB_ERRSPACE。参数:nIndex-指定插入字符串的索引(从0开始)。若为-1,则该串插入到列表的尾部。lpszItem-列表项的文本字符串。CListBox:SetItemData成员函数:格式:int SetItemData(int nIndex,DWORD dwItemDa

    46、ta);功能:设置与列表框中指定列表项相关的32位值。返回:若出错,则返回LB_ERR。参数:nIndex-列表项的索引dwItemData-指定与列表项相关的32位值CListBox:SetItemDataPtr成员函数:格式:int SetItemDataPtr(int nIndex,void*pData);功能:设置与列表框中指定列表项相关的指针。返回:若出错,则返回LB_ERR。参数:nIndex-列表项的索引。pData-指定与列表项相关的指针。CListBox:SetItemData是将一个32数值与某列表项(由nIndex指定)关联起来,而CListBox:SetItemData

    47、Ptr可将数组、结构体等数据与列表项关联。与 上 面 相 对 应 的 两 个 函 数 C L i s t B o x:G e t I t e m D a t a 和CListBox:GetItemDataPtr分别用来获取相关联的用户数据。CListBox:GetItemDataPtr函数:格式:void*GetItemDataPtr(int nIndex);功能:获取与指定列表项关联的指针。返回:若调用成功,则返回获取的指针;若发生错误,则返回-1。参数:nIndex-列表项索引(从0开始)。(2)删除列表项删除列表项int CListBox:DeleteString(UINT nIndex

    48、)成员函数用于删除指定列表项,并返回列表中剩下的列表项个数。void CListBox:ResetContent()成员函数可删除列表框中所有列表项。通过调用int CListBox:GetCount()成员函数将得到当前列表框中列表项的个数。(3)查找列表项查找列表项通过调用CListBox:FindString成员函数可以在列表框中查找指定的列表项的位置。格式:int FindString(int nStartAfter,LPCTSTR lpszItem);功能:在列表框中查找指定的字符串的列表项。返回:若查找成功,则返回所匹配的列表项索引,若查找不成功则返回LB_ERR。参数:nStar

    49、tAfter-查找的开始位置索引号。若为-1,则从头至尾查找。LpszItem-要查找的列表项文本串。(4)选择列表项选择列表项若获取当前所选列表项,可调用CListBox:GetCurSel成员函数:格式:int GetCurSel();功能:获取列表框中当前所选列表项的索引。若设置某列表项为选中状态,可调用CListBox:SetCurSel成员函数:格式:int SetCurSel(int nIndex);功能:设置列表框中某列表项为选中状态(高亮显示)。参数:nIndex-指定列表项的索引。若获取某列表项的文本串,可使用CListBox:GetText成员函数:格式:void GetT

    50、ext(int nIndex,CString&rString);功能:若获取某列表项的字符串。参数:nIndex-列表项的索引。rString-获取的字符串对象。3列表框的列表框的Notification消息消息列表框可以向父窗口发六种Notification消息:LBN_DBLCLK 鼠标双击列表框中某项字符串时产生(映射宏:ON_ LBN_DBLCLK)LBN_ERRSPACE 列表框无法分配内存时产生 LBN_KILLFOCUS/LBN_SETFOCUS 在列表框失去/得到输入焦点时产生 LBN_SELCHANGE 列表框选择的项发生改变时产生 LBN_SELCANCEL 取消当前列表框

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第5章对话框及常用控件课件.ppt
    链接地址:https://www.163wenku.com/p-5177702.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库