欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《基本控件使用》PPT课件.ppt

    • 资源ID:5487070       资源大小:669KB        全文页数:48页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《基本控件使用》PPT课件.ppt

    第10章 基本控件使用(二),第10章 基本控件使用(二),10.1 按钮类10.2 列表框类10.3 应用实例,10.1 按钮类,按钮是一个矩形窗口,通常包含一个标题用来说明按钮的作用。CButton(按钮控件)类是从CWnd类继承下来的。,10.1.1 按钮类的结构,VC+在Afxwin.h中定义了CButton类的结构,结构代码:,class CButton:public CWndDECLARE_DYNAMIC(CButton)public:CButton();/ConstructorsBOOL Create(LPCTSTR lpszCaption,DWORD dwStyle,const RECT,#if(WINVER=0 x400)HICON SetIcon(HICON hIcon);HICON GetIcon()const;HBITMAP SetBitmap(HBITMAP hBitmap);HBITMAP GetBitmap()const;HCURSOR SetCursor(HCURSOR hCursor);HCURSOR GetCursor();#endif/Overridables(for owner draw only)virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);/Implementationpublic:virtual CButton();protected:virtual BOOL OnChildNotify(UINT,WPARAM,LPARAM,LRESULT*);,CButton类中按钮特有的样式,10.1.2 按钮类的方法,按钮类(CButton类)提供了如下的访问方法。,10.2 列表框类,CListBox类在MFC类层次结构中的位置。,10.2.1 列表框类的结构,结构见教材P241,列表框控件可用的样式:,列表框类的结构,表10-4显示了消息映像项,它用于处理列表框通知。,10.2.2 列表框类的方法,1通用 方法,2单选列表框的方法,列表框的默认模式是单选项模式;所有的通用方法均适用于单选项列表框。,3多选列表框的方法,方法 说明 GetAnchorIndex()获得多项选择列表框中当前定位项的下标GetCaretIndex()获得多项选择列表框中具有光标矩形的项的下标GetSelCount()获得多项选择列表框中当前所选的项的数目GetSelItems()将所有当前被选列表框项下标放入一整型数组缓冲区SelItemRange()切换多选择列表框项范围的选择状态SetAnchorIndex()在多项选择列表框中扩充选择设置开始(定位)项SetCaretIndex()在多项选择列表框中指定下标项设置光标矩形SetSel()在多项选择列表框中切换项目的选择状态,多选项列表框扩展了标准单项选择列表框的能力,可以解决在一个列表框中选择多项带来的复杂性,4特定字符串方法,方法 说明 AddString()在列表框中加入一个字符串DeleteString()从列表框中删除一个字符串Dir()从当前目录加文件名放入列表框FindString()在列表框中搜索一字符串FindStringExact()在列表框中搜索第一个与指定搜索字符串匹配的字符串InsertString()在列表框指定下标处插入一字符串ResetContent()清除列表框中的所有项SelectString()在单选列表框中搜索并选择一字符串,适用于单选择和多选择两种模式的列表框,这些方法处理列表框中的字符串项。,5虚拟方法,CListBox类还声明了几个虚拟方法,编程时可从CListBox类中派生一些类替换到应用程序的类中。,方法 说明 CharToItem()可替换此方法为自绘列表框(没有字符串)处理WM_CHARCompareItem()由MFC调用以得到排序的自绘列表框中的新项的位置DeleteItem()当用户从自绘列表框中删除一项时MFC调用此方法DrawItem()当确定自绘列表框项必须重绘时MFC调用此方法MeasureItem()当一自绘列表框被创建时MFC调用此方法来决定列表框的维数VKeyToItem()可替换此方法,处理具有LBS_WANTKEYBOARDINPUT样 式的列表框的WM_KEYDOWN消息,10.3 按钮类与列表框类的应用实例,例10-1 编写应用程序。,1应用程序的界面设计,1应用程序的界面设计,对于成组的单选按钮,只在每组的第一个按钮的属性中选中Group设置,在Sex Selecting组中只有Boy单选按钮选中Group属性,在Age Range组中只有“20”单选按钮选中Group属性,设计过程中,同一组单选按钮必须一个接一个地放进对话框中,中间不能插入其它的控件,顺序放置的原因:Visual C按照放入对话框中的先后顺序,给每个控件赋一个ID值,所以控件的ID值是连续的。Group属性的控件之间的控件为一组。从resource.h的资源头文件中可得到ID值#define IDC_SHOW_BUTTON 1006#define IDC_HIDE_BUTTON 1007#define IDC_Boy_RADIO 1008#define IDC_Girl_RADIO 1009#define IDC_Age1_RADIO 1010#define IDC_Age2_RADIO 1011#define IDC_Age3_RADIO 1012#define IDC_Show_Sex_Age_BUTTON 1013#define IDC_Result_EDIT 1014,2应用程序的代码编程部分1)给各个控件连接变量(什么情况下需要连接变量?),2)与有关按钮、编辑框等控件的连接方法(什么情况下需要定义方法?),3)方法的实现(3.1)给复选框IDC_DATE_CHECK添加代码,void CSELECTBOXDlg:OnDataCheck()UpdateData(TRUE);/以当前的屏幕显示内容更新控件的变量 if(m_DateCheck=TRUE)/若选中Date则在编辑框中显示日期 CTime tNow;/创建CTime的对象tNow=CTime:GetCurrentTime();/获取当前系统日期CString sNow=tNow.Format(%y.%m.%d);/%y.%B.%d/格式化,并将时间值转换为字符串类型m_DateEdit.SetSel(0,-1);/选择编辑框中的全部内容m_DateEdit.ReplaceSel(sNow);/将编辑框替换为系统日期 else m_DateEdit.SetSel(0,-1);m_DateEdit.ReplaceSel();/编辑框显示为空 UpdateData(FALSE);/将控件的值更新屏幕,void CSELECTBOXDlg:OnTimeCheck()UpdateData(TRUE);/以当前的屏幕显示内容更新控件的变量 if(m_TimeCheck=TRUE)/若选中Time则在编辑框中显示时间 CTime tNow;/创建CTime的对象tNow=CTime:GetCurrentTime();/获取当前系统时间CString sNow=tNow.Format(“%I:%M:%S”);/24小时:%H:%M:%Sm_TimeEdit.SetSel(0,-1);m_TimeEdit.ReplaceSel(sNow);/将编辑框替换为系统时间 elsem_TimeEdit.SetSel(0,-1);m_TimeEdit.ReplaceSel();UpdateData(FALSE);,函数Format的参数%I是时间的小时表示法(0112),%m是分的表示法(0059),%d是秒的表示法(0059),(3.2)为复选框IDC_TIME_CHECK添加代码,void CSELECTBOXDlg:OnEnableButton()GetDlgItem(IDC_DATE_CHECK)-EnableWindow(TRUE);/使复选框可选,函数返回指向对象的指针函数 GetDlgItem(IDC_TIME_CHECK)-EnableWindow(TRUE);m_DateEdit.EnableWindow(TRUE);/使编辑框可用/也可表示成:GetDlgItem(IDC_DATE_EDIT)-EnableWindow(TRUE);m_TimeEdit.EnableWindow(TRUE);/也可表示成:GetDlgItem(IDC_TIME_EDIT)-EnableWindow(TRUE);,CWnd类的成员函数return:A pointer to the given control or child window.,关联变量为BOOL型,关联变量为CEdit型,(3.3)给Enable按钮添加代码,void CSELECTBOXDlg:OnDisableButton()/使复选框不可选GetDlgItem(IDC_DATE_CHECK)-EnableWindow(FALSE);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(FALSE);/使编辑框不可用m_DateEdit.EnableWindow(FALSE);m_TimeEdit.EnableWindow(FALSE);,(3.4)为Disable按钮连接代码,void CSELECTBOXDlg:OnShowButton()/使编辑框可见GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_SHOW);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_SHOW);GetDlgItem(IDC_DATE_EDIT)-EnableWindow(SW_SHOW);/表示为:m_DateEdit.ShowWindow(SW_SHOW);GetDlgItem(IDC_TIME_EDIT)-EnableWindow(SW_SHOW);/表示为:m_TimeEdit.ShowWindow(SW_SHOW);,基类CWnd的成员函数,(3.5)为Show Again按钮添加代码,void CSELECTBOXDlg:OnHideButton()/使编辑框不可见GetDlgItem(IDC_DATE_CHECK)-EnableWindow(SW_HIDE);GetDlgItem(IDC_TIME_CHECK)-EnableWindow(SW_HIDE);m_DateEdit.ShowWindow(SW_HIDE);/表示为:m_DateEdit.ShowWindow(SW_SHOW);m_TimeEdit.ShowWindow(SW_HIDE);/表示为:m_TimeEdit.ShowWindow(SW_SHOW);,基类CWnd的成员函数,(3.6)为Hide the Clock Setting按钮添加实现代码,void CSELECTBOXDlg:OnShowSexAgeBUTTON()char sEdit50;/声明字符串变量,用来存放显示在编辑框中的字符 int iSexRADIO;int iAgeRADIO;/表示选中按钮的状态/单选按钮组的状态,返回被选按钮的IDiSexRADIO=GetCheckedRadioButton(IDC_Boy_RADIO,IDC_Girl_RADIO);if(iSexRADIO=IDC_Boy_RADIO)strcpy(sEdit,The boys age is);if(iSexRADIO=IDC_Girl_RADIO)strcpy(sEdit,The girls age is);/复制字符串到变量中iAgeRADIO=GetCheckedRadioButton(IDC_Age1_RADIO,IDC_Age3_RADIO);if(iAgeRADIO=IDC_Age1_RADIO)strcat(sEdit,great than 20);if(iAgeRADIO=IDC_Age2_RADIO)strcat(sEdit,between 15 and 20);if(iAgeRADIO=IDC_Age3_RADIO)strcat(sEdit,less than 15);m_ResultEdit.SetSel(0,-1);m_ResultEdit.ReplaceSel(sEdit);/选中并替换,第一个,最后一个,(3.7)给Show_the_Sex_and_Age按钮添加代码,void CSELECTBOXDlg:OnShowComboButton()UpdateData(TRUE);char sCourseEdit30;char sRecordEdit15;/编辑框中显示course,record int iCourseRadio;/声明选中的课程 iCourseRadio=GetCheckedRadioButton(IDC_ENGLISH_RADIO,IDC_NATURE_RADIO);/单选按钮组的状态,返回被选按钮的IDif(iCourseRadio=IDC_ENGLISH_RADIO)strcpy(sCourseEdit,English record is);if(iCourseRadio=IDC_COMPUTER_RADIO)strcpy(sCourseEdit,Computer record is);if(iCourseRadio=IDC_NATURE_RADIO)strcpy(sCourseEdit,Natural record is);m_Record.GetWindowText(sRecordEdit,15);/获取列表框中选中的内容strcat(sCourseEdit,);/字符串连接空格strcat(sCourseEdit,sRecordEdit);/字符串连接分数m_ComboEdit=_T(sCourseEdit);UpdateData(FALSE);/显示更新,(3.8)为Show_Combo按钮添加代码,类型为CEdit 时,可替换为m_ComboEdit.SetSel(0,-1);m_ComboEdit.ReplaceSel(sCourseEdit);,void CSELECTBOXDlg:OnExitButton()OnOK();,(3.9)给OnExitButton()方法添加代码,BOOL CSELECTBOXDlg:OnInitDialog()CDialog:OnInitDialog();/TODO:Add extra initialization here/初始化选中的按钮CheckRadioButton(IDC_Boy_RADIO,IDC_Girl_RADIO,IDC_Boy_RADIO);CheckRadioButton(IDC_Age1_RADIO,IDC_Age3_RADIO,IDC_Age2_RADIO);UpdateData(FALSE);/将控件的值更新屏幕m_English=0;/变量m_English的类型为int,设置初始选中第一个单选框m_Record.AddString(85);m_Record.AddString(90);m_Record.AddString(95);m_Record.SelectString(-1,95);/默认显示的初始值UpdateData(FALSE);/将控件的值更新屏幕return TRUE;,第一个,最后一个,选中的按钮ID,添加列表框中的选项,4)初始化单选按钮,10.4 对话框通用控件,大部分控件都是在对话框中使用的,无论是基于对话框的应用程序还是Doc/View结构的应用程序,控件通常是放在对话框中的。包括:1.Picture控件2.Spin控件3.Progress控件4.Slider控件5.Date Time Picker控件本节将以一个名为“Ctrl”的基于对话框的应用程序来介绍各种Windows通用控件的使用。,1.Picture控件的使用,(1)分隔线 将Picture控件拖放到对话框中【Type】属性选择“Frame”【Color】属性选择“Etched”将控件拖到最细,此时Picture控件象一条分隔线,Picture控件的使用,(2)图片将【Type】属性设置为“Icon”或者“Bitmap”设置【Image】属性为相应的资源ID,显示图标或位图。,在资源中导入一位图,命名为IDB_BITMAP_DOT,设置Picture控件【Type】为“Bitmap”,【Image】为“IDB_BITMAP_DOT”,2.Spin控件的使用,Spin按钮控件提供了一对箭头,用户通过点击箭头可以微调该控件所表示的数值。,Spin控件通常和tab order位于它之前的控件成对使用。通过CSpinButtonCtrl的GetBuddy方法可获得与之配对的控件,表示Spin控件的是CSpinButtonCtrl类,CSpinButtonCtrl类常用成员,在对话框中拖放一个Edit控件,设为只读,然后拖放一个Spin控件紧挨着刚才的Edit控件,两个控件的ID都使用默认值,设置Spin控件的【Allignment】属性为“Right”,选中【Auto buddy】属性,BOOL CEx9_9Dlg:OnInitDialog()/TODO:Add extra initialization hereCSpinButtonCtrl*pSpin=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1);pSpin-SetRange(0,100);/设置Spin的范围是0100pSpin-SetPos(50);/当前位置是50pSpin-GetBuddy()-SetWindowText(5.0);/设置配对控件的显示值 return TRUE;,在对话框中添加WM_VSCROLL消息(SPIN控件上下滚动消息)的响应:,void CEx9_9Dlg:OnVScroll()/若操作对象为SPIN控件 if(pScrollBar-GetDlgCtrlID()=IDC_SPIN1)CString strValue;/创建字符串对象 strValue.Format(%3.1f,(double)nPos/10.0);/格式化输出内容(CSpinButtonCtrl*)pScrollBar)-GetBuddy()-SetWindowText(strValue);/获取伙伴编辑框进行显示 CDialog:OnVScroll(nSBCode,nPos,pScrollBar);,保证微调步长为0.1,3.Progress控件的使用,进度控件用来指示长时间操作的进展程度。包括从左到右使用系统高亮颜色显示渐进过程的矩形。MFC中表示进度控制的是CProgressCtrl类。,进度条有一个范围和当前位置。范围表示整个操作的持续时间,当前位置表示当前进行的位置,进度条根据当前位置来判断进行的百分比,并显示进度。,添加一个Progress控件,保持默认ID,设置Smooth属性。在旁边添加一个按钮,设置ID为“IDC_BUTTON_START”,Caption为“开始”,在OnInitDialog中添加如下代码:CProgressCtrl*pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);/设置指向进度条的指针pProg-SetRange(0,100);/设置范围为0100pProg-SetPos(50);/设置当前位置为50,为“开始”按钮添加点击事件实现代码:void CEx9_9Dlg:OnButtonStar()CProgressCtrl*pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg-SetPos(0);/设置初始值为0 SetTimer(1000,100,NULL);/启动计时器,自动调用OnTimer()函数/计时器1000,100毫秒为单位,在CCtrlDlg中添加对WM_TIMER消息的响应函数:void CEx9_9Dlg:OnTimer(UINT nIDEvent)if(nIDEvent=1000)/判断计时器 CProgressCtrl*pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);pProg-SetPos(pProg-GetPos()+1);/前进一步 if(pProg-GetPos()=100)/判断是否达到最大值 KillTimer(nIDEvent);/终止计时器AfxMessageBox(进行完毕);CDialog:OnTimer(nIDEvent);,每隔0.1秒,进度条前进一步,4.Slider控件的使用,滑块控件可使用户通过拖动滑块快速获得指定的数据。当用户滑动滑块时,控件将发送消息来指示变化。滑块控件适用于选择一系列离散值或一段连续范围,对话框中增加一个Slider控件,设置Point属性为“Bottom/Right”;然后在旁边添加一个Static控件,ID设置为IDC_STATIC_SLIDER。该控件用来显示滑块的当前位置。,在OnInitDialog函数中添加如下代码:CString strText1;/创建字符串对象/获取当前操作的控件指针CSliderCtrl*pSlide1=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);pSlide1-SetRange(0,100);/设置范围为0100pSlide1-SetPos(50);/设置初始值strText1.Format(%d,pSlide1-GetPos();/格式化SetDlgItemText(IDC_STATIC_SLIDER,strText1);/在静态文本框中显示数值,void CEx9_9Dlg:OnHScroll()/判断当前操作的控件if(pScrollBar-GetDlgCtrlID()=IDC_SLIDER1)CSliderCtrl*pSlide=(CSliderCtrl*)pScrollBar;CString strText;strText.Format(%d,pSlide-GetPos();SetDlgItemText(IDC_STATIC_SLIDER,strText);CDialog:OnHScroll(nSBCode,nPos,pScrollBar);,为了响应滑块移动的消息,添加WM_HSCROLL消息的响应(Slider是水平的,如果是垂直的,则需要响应WM_VSCROLL)。实现如下:,5.Date Time Picker控件的使用,Date Timer Picker可用来接收日期或时间输入。用户可以直接按指定的形式输入,也可以在弹出的日历控件中选择日期。如果让用户以字符串形式输入,则由于输入的多样性,程序不好解析。MFC中用CDateTimeCtrl类表示该控件。,在对话框上添加一个Date Time Picker控件,设置Format为“Short Date”,选择“Use Spin Control”,如果不选择使用Spin控件,则用户在弹出的日历控件中进行输入。在该控件旁边添加一个按钮,ID为“IDC_BUTTON_TIME”,Caption为“报时”。,在OnInitDialog中添加如下代码:CDateTimeCtrl*pDT=(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER1);CString formatStr=_T(今天是:yy/MM/dd);pDT-SetFormat(formatStr);/设置日期显示格式,添加对【报时】按钮的点击事件的响应函数:void CEx9_9Dlg:OnButtonTime()CDateTimeCtrl*pDT=(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER1);CTime t;/创建日期对象pDT-GetTime(t);/获取时间CString s=t.Format(%A,%B%d,%Y%H:%M:%S);/提示对话框显示内容AfxMessageBox(s);/显示提示对话框,

    注意事项

    本文(《基本控件使用》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开