2022年VC教案6标准控件 .pdf

上传人:Che****ry 文档编号:12290825 上传时间:2022-04-24 格式:PDF 页数:29 大小:1.47MB
返回 下载 相关 举报
2022年VC教案6标准控件 .pdf_第1页
第1页 / 共29页
2022年VC教案6标准控件 .pdf_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《2022年VC教案6标准控件 .pdf》由会员分享,可在线阅读,更多相关《2022年VC教案6标准控件 .pdf(29页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、课题: Windows 标准控件目的要求:了解基于对话框应用程序的运行机制掌握 windows 标准控件的属性及使用掌握 windows 标准控件的编程方法掌握类向导创建变量和消息响应函数教学重点:windows 标准控件的属性及使用教学难点:windows 标准控件的属性及使用教学课时:4 教学方法:讲练结合教学内容与步骤:基于对话框应用程序:对话框作为程序主界面,主要用于输出信息和接收用户数据输入。对话框 是 Windows 应用程序中一种常用的资源,其主要功能是输出信息和接收用户的输入数据。在 MFC 中,对话框的 功能被封装 在 CDialog 类中,而CDialog 类是 CWnd

2、类的派生类,而用户创建的对话框类一般都是CDialog类的派生类,从头文件中可看出。作为窗口,对话框和其它窗口一样具有窗口的一切功能。对话框的一个典型应用 是通过菜单命令或工具栏按钮打开一个对话框,当然,对话框也可以作为一个程序的主界面。创建 基于对话框应用程序:利用 MFC AppWizard 向导创建一个基于对话框的应用程序框架。利用对话框编辑器和控件工具栏浮动窗口,进行可视化界面设计。根据程序具体功能要求添加代码,或添加成员变量和成员函数完成相应功能。例:编写一个对话框应用程序MyDialog ,程序运行后显示一个对话框,并在对话框上显示文本串。如下图。步骤:1,应利用用程序向导MFC

3、AppWizard生成基于Dialog Based 的应用程序项目,程序名为: MyDialog 。2,去掉对话框中静态文本控件,其标题为“TODO: 在这里设置对话控制”,调整对话框大小。3,在成员函数CMyDialogDlg:OnPaint()中添加代码CPaintDC dc(this); dc.SetBkMode(TRANSPARENT); dc.TextOut(20, 50, 这是一个对话框应用程序!); 对话框类的结构:1, 对话框应用程序包含的类及主对话框类的主要成员:应用程序名设为test 三个类: CtestApp, CtestDlg, CAboutDlg 2,CDialog

4、类从 CWnd 类派生而来,所以它继承了CWnd 类的成员函数,具有CWnd 类的基本功能,可以编写代码移动、显示或隐藏对话框,你的CDialog类的派生类中可以直接调用 CDialog 类的成员函数。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 29 页 - - - - - - - - - - 3,常用处理函数CDialog:CDialog() 通过调用派生类构造函数,根据对话框资源模板定义一个对话框。CDialog:OnOk() 单击 OK 按钮时调用该函数,接收对话框输入数据,关闭对话

5、框。CDialog:OnCancel() 单击Cancel 按钮或按Esc 键时调用该函数,不接收对话框输入数据,关闭对话框。CDialog:OnInitDialog() 在显示对话框前调用该函数进行初始化。CDialog:DoModal() 激活模态对话框,显示对话框窗口。CDialog:Create() 根据对话框资源模板创建非模态对话框窗口。如果对话框不是Visible属性,还需通过调用CWnd:ShowWindow() 函数显示非模态对话框窗口。CWnd:ShowWindow(true,false) 显示或隐藏对话框窗口CWnd:UpdateData() 通过调用DoDataExcha

6、nge()设置或获取对话框控件的数据CWnd:DoDataExchange() 被 UpdateData()调用以实现对话框数据交换,不能直接调用。CWnd:GetWindowText() 获取对话框窗口的标题CWnd:SetWindowText() 修改对话框窗口的标题CWnd:GetDlgItemText() 获取对话框中控件的文本内容CWnd:SetDlgItemText() 设置对话框中控件的文本内容CWnd:GetDlgItem() 获取控件或子窗口的指针CWnd:MoveWindow() 用于移动对话框窗口CWnd:EnableWindow() 使窗口处于禁用或可用状态CWnd:C

7、heckRadioButton 设置单选按钮选中项CWnd:GetCheckedRadioButton 获取单选按钮选中项对话框数据交换DDX 和验证 DDV: 通过 ClassWizard 类向导将对话框控件与成员变量相关联。调用 UpdateData()时 MFC 通过调用DoDataExchange(), 实现对话框数据的交换DDX和验证DDV 。调用UpdateData(TRUE) 函数时, DDX将数据从控件传递到关联的成员变量;当调用UpdateData(FALSE) 时, MFC 通过调用DDX函数将数据从成员变量传递到关联的的控件。如:DDX_Text(pDX, IDC_EDI

8、T1, m_edit); DDV :利用ClassWizard 类向导添加成员变量时,用户如果在窗口的左下角输入数据的范围 ,如:成员变量m_nInput 时指定它的最小值和最大值分别为0 和 100。ClassWizard将自动加入函数DDV的调用代码DDV_MinMaxUInt(pDX, m_nInput, 0, 100)。程序运行后,如果用户的输入数据超出0100 的范围, DDV 将显示一个提示信息对话框,提示用户有效的输入范围。注:显示调用:UpdateData()实现对话框数据的交换DDX ,隐 式 调 用 : 程 序 调 用CDialog:DoModal()创 建 并 显 示 对

9、 话 框 时 , 将 自 动 调 用CDialog:OnInitDialog()完成初始化的工作。在OnInitDialog()中调用了UpdateData(FALSE) ,将数据从成员变量传递到关联的控件,从而显示在控件中。单击OK按钮将调用CDialog:OnOk() 函数,在OnOK() 中调用了UpdateData(TRUE) ,将数据从控件传递到关联的成员变量。控件概述 :控件是 Windows 提供的完成特定功能的独立小部件,也是一个小窗口,它使应用程序对话功能的设计更容易完成,在对话框与用户的交互过程中担任主要角色,用于完成用户输入和程序运行过程中的输出。控件对应一个CWnd 派

10、生类的对象,它实际上也是一个窗口,可以通过调用窗口类的成员函数实现控件的移动、显示或隐藏、禁用或可用等操作,也可以重新设置它们的尺寸和风格等属性。MFC 以类的形式对标准控件和公共控件进行了封装,这些类大部分是从CWnd 类直接派生而来。标准控件:Windows 提供的控件分为两类:标准控件和公共控件。标准控件:静态控件、编辑框、按钮、列表框、组合框和滚动条等。利用标准控件可满足大部分用户界面程序设精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 29 页 - - - - - - - - - -

11、 计的要求。公共控件:滑块、进度条、列表视控件、树视控件和标签控件等,利用公共控件实现应用程序用户界面风格的多样性。常用的 MFC 控件类 : 控件通知 Notification 消息 :用户对控件的操作将引发控件事件,Windows 产生对应的控件通知Notification消息,消息由其父窗口(如对话框)接收并处理。标准控件发送WM_COMMAND控件通知消息,公共控件一般发送WM_NOTIFY控件通知消息,有时也发送WM_COMMAND消息。通过WM_COMMAND消息参数标识发出消息的控件和具体的事件,消息参数中包含了控件的ID 标识和通知码(如BN_CLICKED单击按钮事件) 。控

12、件通知码前缀最后一个字母为 N。程序员不必关心消息具体的发送和接收,只需利用ClassWizard 将控件映射到成员变量,将控件消息映射到成员函数,然后编写具体的处理代码。控件的创建方法:控件在程序中可作为对话框控件或独立的窗口两种形式存在,因此,控件的创建方法也有两种。一种方法是在对话框模板资源中指定控件,这样当应用程序创建对话框时,Windows就会为对话框创建控件,编程时我们一般都采用这种方法。一种方法是通过调用MFC控件类的成员函数Create()创建控件,也可以调用API 函数CreateWindow() 或 CreateWindowEx() 创建控件。控件也可以用于其它窗口,如在程

13、序视图窗口显示控件。这时,需要首先声明一个MFC 控件类的对象,然后调用Create()函数创建控件,如:画笔类对象。控件的组织 :1,添加或删除控件打开对话框编辑器和控件工具栏,在控件工具栏中单击要添加的控件,此时,当光标指向对话框时将变成十字形状,在对话框指定位置处单击鼠标左键,则该控件被添加到对话框中指定的位置。也可以将光标指向控件工具栏中的控件,然后按住鼠标不放,采用鼠标拖曵的方法将控件拖入到对话框中。要删除已添加的控件,先单击对话框中的控件,再按 Delete 键即可删除指定的控件。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - -

14、 - - - - - - - -第 3 页,共 29 页 - - - - - - - - - - 2. 设置控件属性将光标指向对话框中需设置属性的控件,按回车键(或右击鼠标,在弹出式菜单中选择Properties 项)弹出 Properties 对话框,在Properties 对话框中设置控件属性。可以将属性对话框始终保持打开,只需要按下属性对话框左上角的图钉按钮。3. 调整控件的大小对于静态文本控件,当输入标题内容时,控件的大小会自动改变。对于其它控件,先单击控件,然后利用控件周围的尺寸调整点来改变控件的大小。所选对象的位置和大小将显示在状态栏的右端。4. 同时选取多个控件一种方法是在对话框

15、内按住鼠标不放,拖曵出一个大的虚线框,然后释放鼠标,则被该虚线框所包围的控件都将被同时选取;另一种方法是按住Shift( 或 Ctrl) 键不放,然后用鼠标连续选取控件。5. 移动和复制控件当单个或多个控件被选取后,按方向键或用鼠标拖动选择的控件可移动控件。若在鼠标拖动过程中按住Ctrl 键则复制控件,复制的控件保持原来控件的大小和属性。并且,控件能够通过复制和粘贴操作而加入到其它对话框中。6. 编排控件编排控件主要是指同时调整对话框中一组控件的大小或位置。编排控件有两种方法,一种方法是使用控件布局工具栏,自动编排对话框中同时选定的多个控件;另一种方法是使用 Layout 菜单,当打开对话框编

16、辑器时,Layout 菜单将出现在菜单栏上。为了便于用户在对话框内精确定位各个控件,系统还提供了网格、标尺等辅助功能。测试对话框和控件的方法:通过按下 Ctrl+T 组合键就能测试对话框运行时的界面效果。控件共有属性:控件的属性决定了控件的外观和功能,我们只有通过控件属性对话框才能设置控件的属性。不同控件有不同的属性,但它们都具有通用属性,如控件标识ID、标题Caption 等项,控件属性对话框上有若干选项卡,如General(通用属性) 、 Style(风格)及Extend Styles(扩展风格)选项卡等,其中General 页用于设置控件的通用属性,Styles 和Extendcd St

17、yles 页用来设置控件的外观和辅助属性。控件的 General 属性:按钮控件:CButton 类按钮是最常见的控件之一,按钮控件包括:普通按钮,圆按钮,复选框按钮,组框按钮,自绘按钮。下压式按钮(或普通按钮或按键按钮) :功能,按键按钮在被按下时会立即执行某个命令,也被称为命令按钮。Properties 对话框可以设置按钮的不同风格,如通过设置Default button 属性设置一个默认按钮。其它属性:Owner draw 利用 WM_DRAWITEM消息处理函数定制按钮的外观,Icon 表示用图标代替原来的文本标题,Bitmap 表示用位图代替原来的文本标题,Client edge 、

18、Static edge、Modal frame 用于设置按钮的外观。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 29 页 - - - - - - - - - - 单选按钮(或 圆按钮):在一组互相排斥的选项中选择其中一项。由一个圆圈和紧随其后的文本标题组成,当它被选中时,圆圈中就标上一个黑点。单选按钮设置Auto 自动属性为默认属性,Auto 属性表示用户若选中同组中的某个单选按钮,则自动清除其余单选按钮的选中状态,保证一组选项中始终只有一项被选中。一般将一组单选按钮放在一个组框中,在一组

19、单选按钮中,第一个(Tab 键顺序 )按钮最重要,其ID 值可用于在对话框中为控件建立关联的成员变量。必须为同组中的第一个单选按钮设置Group 属性 ,而同组的其它单选按钮不可再设置Group 属性。复选框: 在一组选项中选择其中一项或多项;每组中各按钮相对独立。由一个空心方框和紧随其后的文本组成,当它被选中时,空心方框中就加上一个“”或“”标记。不同于单选按钮,在一组复选框中每次可以同时选择多项。除了选中和没选中两种状态,复选框还有第三种状态,此时选中标记显示为暗色,它表示该项不可以由用户选择。通过设置Tri-state 属性得到这种三态复选框。另外,我们可以通过设置Push-like 属

20、性使单选按钮或复选框具有普通按钮的外观。分组框: 只是在窗口中划分区域范围,组框可以使一组控件关联起来按钮控件消息 : 按钮控件只能发送通知码为BN_CLICKED (单击按钮)和BN_DOUBLECLICKED(双击按钮)的WM_COMMAND消息,我们经常需要编写按钮的BN_CLICKED消息处理函数。CButton 类提供了一些成员函数实现对按钮控件对象的控制和管理,如利用成员函数GetCheck() 或SetCheck()获 取 或 设 置 单 选 按 钮 或 复 选 框 的 当 前 状 态 , 利 用 成 员 函 数GetButtonStyle() 或 SetButtonStyle(

21、) 获取或改变按钮控件的风格自绘按钮: MFC 还提供了一个CBitmapButton的类,允许用户以图标的方式显示按钮,它是在 CButtong 下派生的, MFC 调用方法DrawItem() 在按钮上绘制位图,LoadBitmaps() 方法为一个 CBitmapButton 对象附上位图,最多可以有4 个位图。CWnd 类消息: 在知道按钮ID 的前提下,还可使用与按钮有关的CWnd 成员函数来设置或 查 询 按 钮 状 态 : CheckDlgButton , CheckRadioButton , GetCheckedRadioButton , Is DlgButtonChecked

22、 ,GetWindowText ,GetWindowTextLength ,SetWindowText 按钮控件示例:主要步骤:1,创建基于对话框项目2,创建资源并设置资源(按钮)的属性(控件右键,弹出对话框中输入)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 29 页 - - - - - - - - - - 注:组框属性不必修改,为默认值,组框只是装饰,编程中不会用到。3. 添加成员变量并添加消息响应函数(菜单视图类向导:弹出对话框)成员变量 : (Membr Variables )注:成

23、员变量可以是数值型:单选按钮(数组下标顺序),复选按钮(选中为0,不选中为1)控件类型:通过成员函数SetCheck(0,1)设置调用成员:1,定义控件变量。2, 调用窗口类成员GetDlgItem(IDC_DATE_CHECK)获取控件ID 的指针,调用成员。CheckRadioButton(IDC_Boy_RADIO,IDC_Girl_RADIO,IDC_Boy_RADIO); iCourseRadio=GetCheckedRadioButton(IDC_ENGLISH_RADIO,IDC_NATURE_RADIO); 注:复选框, auto 风格控件不必添加成员变量,组框只是装饰,不用变

24、量消息响应函数 :(Message Mapps) void CMy9_1Dlg:OnButton1() SetWindowText( “你已按下了按钮!”); void CMy9_1Dlg:OnButton2() m_btn2.SetWindowText( “按钮已被按下!”); void CMy9_1Dlg:OnCheck1() if(m_chk1.GetCheck()0) m_chk1.SetCheck(0); else m_chk1.SetCheck(1); void CMy9_1Dlg:OnRadio1() m_rad1.SetCheck(1); 滚动条控件:CScrollBar 类I

25、DC_BUTTON1 IDC_BUTTON2 IDC_RADIO1 IDC_RADIO2 IDC_CHECK1 IDC_CHECK2精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 29 页 - - - - - - - - - - 滚动条是一个交互式的、高度可视化的控件它包括一个滑块、滚动条的两端的按钮等。滚动条控件与属于窗口的滚动条是不一样的。处于窗口的滚动条是由该窗口创建、管理和释放的,滚动条控件是由用户创建、管理和释放的滚动条类的结构及其方法:滚动条可以通过通知代码来创建,也可以用对话框资

26、源模板来创建常用滚动条动作标识及其说明SB_TOP / SB_BOTTOM :滚动到滚动条最顶/ 底端SB_LINEUP / SB_LINEDOWN:向上/ 下滚动一行SB_LEFT / SB_RIGHT :滚动到左/ 右边SB_LINELEFT / SB_LINERIGHT:向左/ 右滚动一行SB_PAGEUP / SB_PAGEDOWN :向上/ 下滚动一页SB_PAGELEFT / SB_PAGERIGHT :向左/ 右滚动一页SB_THUMBPOSITION:滚动框移动到新位置SB_THUMBTRACK:滚动框被拖动SB_ENDSCROLL :滚动到最终位置创建与初始化滚动条类在设置滚

27、动条控件时,要通过如下方法设置其范围:CScrollBar:SetScrollRange() 例如,设置滚动范围为-100 到 100 的垂直滚动条pMyScroll-SetScrollRange(SB_VERT,-100,100); 通过 SetScrollPos()设置滚动块当前位置例如,滚动快的位置在-100 到 100 的中间,即为0 的位置。 pMyScroller-SetScrollPos(0); 例, 滚动条类编程实例,如下图CScrollBar类的方法方法说明EnableScrollBar() 使滚动条的一个或两个箭头有效或无效GetScrollInfo() 获得滚动条的消息G

28、etScrollLimit() 获得滚动条的范围GetScrollPos() 获得滚动条当前的位置GetScrollRange() 获得制定滚动条的当前最大和最小滚动位置SetScrollInfo() 设置滚动条的消息SetScrollPos() 设置滚动块当前的位置SetScrollRange() 设置制定滚动条的最大和最小滚动位置ShowScrollBar() 显示或隐藏滚动条精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 29 页 - - - - - - - - - - (1) 应用程序

29、的可视化编程部分:创建资源并设置资源属性(2) 应用程序的代码编程部分(a) 给滚动条连接变量ID 变量名类别类型IDC_SCROLLBAR m_Scrollbar Control CScrollbar IDC_EDITl m_Edit Control CEdit (b) 初始化滚动条BOOL CMy9_2Dlg:OnInitDialog() CDialog:OnInitDialog(); ,/ TODO: Add extra initialization here m_Scrollbar.SetScrollRange(0,20); m_Scrollbar.SetScrollPos(10);

30、char sPos10; itoa(m_Scrollbar.GetScrollPos(),sPos,10); m_Edit.SetSel(0,-1); m_Edit.ReplaceSel(sPos); UpdateData(FALSE); return TRUE; (3) 给滚动条消息添加代码void CMy9_2Dlg:OnVScroll(,) / TODO: Add your message handler code here char sPos10; int iNowPos; switch(nSBCode) if(pScrollBar=&m_Scrollbar) 对话框中各个对象的属性对

31、象ID 滚动条IDC_SCROLLBAR 编辑框IDC_EDIT1 Up 按钮IDC_UP_BUTTON Down 按钮IDC_DOWN_BUTTON Reset按钮IDC_RESET_BUTTON Exit按钮IDC_EXIT_BUTTON 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 29 页 - - - - - - - - - - case SB_THUMBTRACK: /拖动滑块m_Scrollbar.SetScrollPos(nPos); itoa(nPos,sPos,10); m

32、_Edit.SetSel(0,-1); m_Edit.ReplaceSel(sPos); case SB_LINEDOWN: /单击滚动条向下的箭头iNowPos=m_Scrollbar.GetScrollPos(); iNowPos=iNowPos+1; if(iNowPos20) iNowPos=20; m_Scrollbar.SetScrollPos(iNowPos); itoa(m_Scrollbar.GetScrollPos(),sPos,10); m_Edit.SetSel(0,-1); m_Edit.ReplaceSel(sPos); break; case SB_LINEUP:

33、 /单击滚动条向上的箭头iNowPos=m_Scrollbar.GetScrollPos(); iNowPos=iNowPos-1; if(iNowPos20) iNowPos=20; m_Scrollbar.SetScrollPos(iNowPos); itoa(m_Scrollbar.GetScrollPos(),sPos,10); m_Edit.SetSel(0,-1); m_Edit.ReplaceSel(sPos); break; case SB_PAGEUP: /单击箭头与滚块之间的区域iNowPos=m_Scrollbar.GetScrollPos(); iNowPos=iNow

34、Pos-3; if(iNowPos 单击鼠标右键,选择Properties 命令,在窗口中输入控件的ID对 象ID Caption 编辑框IDC_EDIT1 无编辑框IDC_EDIT2 无命令按钮IDC_SHOW1_BUTTON Showl 命令按钮IDC_CLEAR1_BUTTON Clearl 命令按钮IDC_SHOW2_BUTTON Show2 命令按钮IDC_CLEAR2_BUTTON Clear2 命令按钮IDC_Transfer_BUTTON Transfer 命令按钮IDC_EXIT_BUTTON &Exit 命令按钮IDC_UNDO_BUTTON &Undo 多行编辑所支持的C

35、Edit 法方法说明FmtLines()设置在多行编辑控件中包含软分行符GetHandle()获得当前分配给一个多行编辑控件的内存的句柄GetLine()从一编辑控件中获得一行文本GetLineCount()获得多行编辑控件的行数LineIndex()设置多行编辑控件中一行的字符下标SetHandle()设置多行编辑控件将要用到的句柄内存句柄SetRect()设置多行编辑控件的格式化矩形并更新控件SetRectNP()设置多行编辑控件的格式化矩形并且不重绘控件窗口SetTabStops()在多行编辑控件中设置制表(tab)位精品资料 - - - 欢迎下载 - - - - - - - - - -

36、 - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 29 页 - - - - - - - - - - 标识值, IDC_EDIT1 ,用同样的方法设置其它各个对象的属性,如上图(3) 应用程序的代码编程部分(a) 给编辑框连接变量选择 Member Variables 选项卡,在Control IDs 列表框中单击IDC_EDIT1 项,使之高亮化单击 Add Variable 按钮,此时显示Add Member Variable 窗口(b) 设置成员变量名为m_Edit1,类别为 Control ,变量类型为CEdit 注意,不要将m_Edit1 设为 CStr

37、ing 类型,因为只有设为CEdit 类型,才能够调用CEdit 类中的一些成员函数,如Copy , Paste 等,这样才能完成本应用程序中对Transfer 按钮要求复制内容的操作的响应,EDIT2 等其它对象连接各自的变量,增加变量之后 MFC ClassWizard 窗口将变为下图所示若此时运行该程序,在文本框中不能进行多行输入,只能单行输入文本,而且按回车键终止应用程序,同时,文本框中也没有水平和垂直滚动条。下面,我们来完善应用程序中编辑框的特性,使之能够进行多行文本的输入若不选择此项,在编辑框中按回车键就会终止应用程序,若选此项,按回车键就可进行下一行的输入,实现多行文本的输入(c

38、) 修改编辑框的特性(4) (a) 给 Showl 按钮连接代码void CMy9_5Dlg:OnShow1Button() m_Edit1.SetSel(0,-1); / 选中编辑框IDC_EDIT1 中的全部内容m_Edit1.ReplaceSel(This is the first EditBox.); 程序中 SetSel()函数是 CEdit 类中的成员函数,因为m_Edit1 是属于CEdit 类的对象,故可以调用该类所有的成员函数。ReplaceSel()函数也是CEdit 类中成员函数。(b) 给 Clear1 按钮连接代码void CMy9_5Dlg:OnClear1Butt

39、on() m_Edit1.SetSel(0,-1); /选中 IDC_EDIT1中的内容m_Edit1.ReplaceSel(); /用空串代替所选文本,即把所选的文本删除 (c) 给 Show2 和 Clear2 按钮连接代码void CMy9_5Dlg:OnShow2Button() 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 29 页 - - - - - - - - - - m_Edit2.SetSel(0,-1); m_Edit2.ReplaceSel(This is the s

40、econd EditBox.); void CMy9_5Dlg:OnClear2Button() m_Edit2.SetSel(0,-1); m_Edit2.ReplaceSel(); (d) 给按钮 IDC_Transfer_BUTTON连接代码void CMy9_5Dlg:OnTransferButton() m_Edit1.SetSel(0,-1); m_Edit1.Copy(); m_Edit2.SetSel(0,-1); m_Edit2.ReplaceSel(); m_Edit2.Paste(); (e)给 Undo 按钮连接代码void CMy9_5Dlg:OnUndoButton

41、() m_Edit1.Undo(); m_Edit2.Undo(); (f)给 Exit 按钮连接代码void CMy9_5Dlg:OnExitButton() OnOK(); 练习“乘法器”示例程序,使用者在“乘数”或者“被乘数”编辑框中输入数字的时候,程序可以随时计算乘法的结果1,创建资源并设置属性,设置变量ID Type Member Read-only Number IDC_EDIT_MUL1 int m_A IDC_EDIT_MUL2 int m_B IDC_EDIT_RESULT CString m_Result 2,添加消息处理函数(1)初始化结果编辑框BOOL CMy9_6Dl

42、g:OnInitDialog() CDialog:OnInitDialog(); ,/ TODO: Add extra initialization here UpdateData(TRUE); int i=m_A*m_B; m_Result.Format(%d, i); UpdateData(FALSE); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 29 页 - - - - - - - - - - return TRUE; (2)当编辑框中的内容发生改变时,会产生EN_CHANGE消

43、息,需要为乘数与被乘数两个编辑框响应该消息void CMy9_6Dlg:OnChangeEditMul1( ) UpdateData(TRUE); int i=m_A*m_B; m_Result.Format(%d, i); UpdateData(FALSE); void CMy9_6Dlg:OnChangeEditMul2( ) UpdateData(TRUE); int i=m_A*m_B; m_Result.Format(%d, i); UpdateData(FALSE); (3) 响应 Reset按钮的消息void CMy9_6Dlg:OnReset() m_A = 0; m_B =

44、0; int i=m_A*m_B; m_Result.Format(%d, i); UpdateData(FALSE); 列表框应用举例练习,创建一个单选列表框,并在该列表框中列出当前目录的文件,双击后删除该项主要步骤如下:(1)在对话框上放置一个List Box(IDC_LIST_DIR)控件和一个Static(IDC_STATIC_DIR )控件。 List Box 控件用于显示文件名称,Static 控件用于显示当前显示的文件所在的目录(2)为 List Box 控件添加 CListBox 类型成员变量m_list (3)在 OnInitDialog函数中添加初始化列表框内容的代码BOO

45、L CMy9_4Dlg:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here DWORD cchCurDir = MAX_PATH; LPTSTR lpszCurDir; CHAR tchBufferMAX_PATH; lpszCurDir = tchBuffer; GetCurrentDirectory(cchCurDir, lpszCurDir); DlgDirList(lpszCurDir, IDC_LIST_DIR, IDC_STATIC_DIR, 0); return TRUE; 获得

46、当前目录 , 设置列表框显示条目为当前目录下所有文件名精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 29 页 - - - - - - - - - - (4)为了实现双击条目删除的功能,需要响应列表框的LBN_DBLCLK消息void CMy9_4Dlg:OnDblclkListDir() / TODO: Add your control notification handler code here int i = m_list.GetCurSel(); CString str; m_lis

47、t.GetText(i, str); m_list.DeleteString(i); CString msg = Item +str+ deleted!; AfxMessageBox(msg); 练习编写一个对话框应用程ExmpList ,对话框中有一个列表框,当用户单击列表框中的一个列表项(一个国家)时,在四个编辑框分别显示指定国家的名称、首都、面积和人口。单击“添加”按钮时,“国家”编辑框中的文本将被添加到列表框中;单击“删除”按钮时,当前的列表项将被删除。组合框控件:组合框 (CComboBox) 类的结构及组合框的特点组合框是两种预定义窗口的组合形式。在 Windows 编程中使用单一

48、控件往往不能完全满足与用户交互的需要,最常见的组合框例子是对话框及与其相联系的静态文本和编辑框。【例】本例创建组合框控件,当单击向下按钮时,显示可选文件的名字。当选中某一项时,显示该项的名称将一个 Combo Box 控件放到对话框上。取消Sort 风格。否则插入的内容将按照字母顺序排序,而不是插入的顺序排序。添加CComboBox 类型的变量m_cb BOOL CMy9_7Dlg:OnInitDialog() /初始化对话框 CDialog:OnInitDialog(); ,/ TODO: Add extra initialization here m_cb.AddString(Monday

49、); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 29 页 - - - - - - - - - - m_cb.AddString(Tuesday); m_cb.AddString(Wednesday); m_cb.AddString(Thursday); m_cb.AddString(Friday); m_cb.AddString(Saturday); m_cb.AddString(Sunday); return TRUE; 当用户选择的内容发生改变的时候,会产生CBN_SELCHANG

50、E消息。为控件添加该消息的响应函数:void CMy9_7Dlg:OnSelchangeCombo() CString msg; m_cb.GetLBText(m_cb.GetCurSel(), msg); AfxMessageBox(msg); void CMy9_7Dlg:OnSelchangeCombo() char text20; int index; this-UpdateData(true); m_combo.GetWindowText(text,10); index=m_combo.FindString(m_combo.GetCount(),text); if(index!=CB

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

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com