标准控件的编程_第1页
标准控件的编程_第2页
标准控件的编程_第3页
标准控件的编程_第4页
标准控件的编程_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 Windows 标准控件在可视化编程中的应用1 控件是Windows 图形用户界面的主要组成部分之一,用户通过操作控件对象完成与应用程序之间的交互。控件的使用集中体现了Windows 系统面向对象的特点 29.1概述控件工具栏控件接受的消息主要有单击、双击和字符输入等控件的选择静态文本组框复选框组合框水平滚动条旋转按钮滑动条列表视图标签复合编辑月历用户定制工具静态图片编辑框按钮单选框列表框垂直滚动条进展条热键树形视图动画日期选择IP地址组合框的扩展39.2 按钮控件及其应用 按钮控件 普通按钮(下压式)圆按钮(单选)复选框按钮组框按钮49.2.1 按钮控件的创建过程 CButton类的

2、成员函数Create负责创建按钮控件,该函数的声明为:BOOL Create ( LPCTSTR lpszCaption, /指定了按钮显示的正文 DWORD dwStyle, /按钮的风格 const RECT& rect, /按钮的位置和大小 CWnd* pParentWnd, /指向父窗口, UINT nID/按钮的ID )5按钮控件消息:ON_BN_CLICKEDON_BN_DBLCLICKEDON_COMMAND两个类似按钮是最常见的控件之一复选框按钮单选按钮下压式按钮组框按钮常用于只有两种完全相反状态的情况下适用于同一组属性相同的数据中选一个数据适用于消息的发送没有太多的操作只是在

3、窗口中划分区域范围6GetCheck( )SetCheck( )GetBitmap()SetBitmap()GetButtonStyle()SetButtonStyle()GetCursor()SetCursor()GetIcon()SetIcon()GetState()SetState()CButton类的成员函数在知道按钮ID的前提下,还可使用与按钮有关的CWnd成员函数来设置或查询按钮状态 CheckDlgButtonCheckRadioButtonGetCheckedRadioButtonIs DlgButtonCheckedGetWindowTexGetWindowTextLengt

4、hSetWindowText79.2.2 按钮控件示例 8主要步骤:创建基于对话框项目设置按钮的属性 Group属性9 控件的选取 (多个)在对话框内按住鼠标左键不放,拖出一个大的虚框,释放鼠标,则被该虚框所包围的控件都将被选取。先按住Shift键不放,用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。若在选取时,对已选取的控件再选取一下,则该控件取消选取。一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通常是八个)蓝色实心小方块,拖动它可改变控件的大小,如图。多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件,而其他控件的选择框的

5、小方块是空心的。如图。(b)(a)10 设定控件的Tab键次序一是改变用Tab键选择控件的次序,二是当两个或两个以上的控件构成一组时,需要它们的Tab键次序连续。对话框内控件的Tab键次序设定步骤如下:首先,选择“Layout”“Tab Order”命令,或按Ctrl+D,此时每个控件的左上方都有一个数字,表明了当前Tab键次序,如图。其次,按新的次序依次用鼠标单击各个控件,新的Tab键即可生成。最后,单击对话框或按Enter键结束Tab Order 方式。11对话框内的控件的布局123. 添加成员变量并添加消息响应函数134. 添加数据成员14void CMy9_1Dlg:OnButton1

6、() m_btn1.SetWindowText(你已按下了按钮!); void CMy9_1Dlg:OnButton2() m_btn2.SetWindowText(按钮已被按下!); void CMy9_1Dlg:OnRadio1() sex=1; void CMy9_1Dlg:OnRadio2() sex=2; 15作业1、按钮控件的类名是什么?2、按钮控件的特点是什么?3、按钮控件可分为几类?发到: 169.3 滚动条控件 滚动条是一个交互式的、高度可视化的控件它包括一个滑块、滚动条的两端的按钮等。滚动条控件与属于窗口的滚动条是不一样的处于窗口的滚动条是由该窗口创建、管理和释放的滚动条控

7、件是由用户创建、管理和释放的179.3.1 滚动条类的结构及其方法 滚动条可以通过通知代码来创建,也可以用对话框资源模板来创建18常用滚动条动作标识及其说明SB_TOP / SB_BOTTOM :滚动到最顶 / 底端SB_LINEUP / SB_LINEDOWN:向上 / 下滚动一行SB_PAGEUP / SB_PAGEDOWN :向上 / 下滚动一页SB_LEFT / SB_RIGHT:滚动到左 / 右边SB_LINELEFT / SB_LINERIGHT:向左 / 右滚动一行SB_PAGELEFT/SB_PAGERIGHT :向左 / 右滚动一页SB_THUMBTRACK:滚动框被拖动19

8、在设置滚动条控件时,要通过如下方法设置其范围CScrollBar:SetScrollRange()例如,设置滚动范围为-100到100的垂直滚动条pMyScroll.SetScrollRange(-100,100);通过SetScrollPos()设置滚动块当前位置例如,滚动快的位置在-100到100的中间,即为0的位置pMyScroller.SetScrollPos(0);209.3.3滚动条类编程实例 标题为Application of ScrollBar滚动条的滚动范围设为0到20单击滚动块与箭头之间的区域。滚动块上移或下移三格,编辑框中的数字加3或减3单击向上或向下的箭头,滚动块向上或

9、向下移动一格,编辑框中的数字加1或减1按住滚动块上下拖动。编辑框中的数字随着随之变化当前值为10单击Up按钮,滚动块移到最上边,编辑框的数字变为0单击Down按钮,滚动块移到最下边,编辑框的数字变为20单击Reset按钮,滑块移到中间,编辑框的数字变为10单击Exit按钮,退出应用程序21(1) 应用程序的可视化编程部分22(2) 应用程序的代码编程部分(a) 给滚动条连接变量ID变量名类别 类型IDC_SCROLLBARm_ScrollbarControlCscrollbarIDC_EDITlm_Edit1Valueint23BOOL CMy9_2Dlg:OnInitDialog() CDi

10、alog:OnInitDialog(); / TODO: Add extra initialization herem_Scrollbar.SetScrollRange(0,20);m_Scrollbar.SetScrollPos(10);m_Edit=m_Scrollbar.GetScrollPos();UpdateData(FALSE);return TRUE; (b) 初始化滚动条24(3) 给滚动条消息添加代码 void CMy9_2Dlg:OnVScroll() / TODO: Add your message handler code hereint iNowPos;switch(

11、nSBCode) if(pScrollBar=&m_Scrollbar) case SB_THUMBTRACK:/拖动滑块m_Scrollbar.SetScrollPos(nPos);m_Edit=m_Scrollbar.GetScrollPos(); UpdateData(false);25case SB_LINEDOWN:/单击滚动条向下的箭头iNowPos=m_Scrollbar.GetScrollPos();iNowPos=iNowPos+1;if(iNowPos20)iNowPos=20;m_Scrollbar.SetScrollPos(iNowPos);m_Edit=m_Scrol

12、lbar.GetScrollPos(); UpdateData(false);break;26case SB_LINEUP:/单击滚动条向上的箭头iNowPos=m_Scrollbar.GetScrollPos();iNowPos=iNowPos-1;if(iNowPos20)iNowPos=20;m_Scrollbar.SetScrollPos(iNowPos);m_Edit=m_Scrollbar.GetScrollPos(); UpdateData(false);break;28case SB_PAGEUP:/单击箭头与滚块之间的区域iNowPos=m_Scrollbar.GetScro

13、llPos();iNowPos=iNowPos-3;if(iNowPosSetRange(0, 100);pSpin-SetPos(50);pSpin-GetBuddy()-SetWindowText(5.0);return TRUE; 设置Spin的范围是0100,当前位置是50,同时设置它的配对控件的显示值 58在对话框中添加WM_VSCROLL消息的响应:void CEx9_9Dlg:OnVScroll() if (pScrollBar-GetDlgCtrlID() = IDC_SPIN1) CString strValue; strValue.Format(%3.1f, (double

14、) nPos / 10.0);(CSpinButtonCtrl*)pScrollBar)-GetBuddy()-SetWindowText(strValue); CDialog:OnVScroll(nSBCode, nPos, pScrollBar); 599.7.3 Progress控件的使用 进度控件是一个用来指示长时间操作的进展程度的控件。MFC中表示进度控制的是CProgressCtrl类 进度条有一个范围和当前位置。范围表示整个操作的持续时间,当前位置表示当前进行到的位置,进度条根据当前位置来判断进行的百分比,来显示进度 60 添加一个Progress控件,保持默认ID,设置Smoo

15、th属性。在旁边添加一个按钮,设置ID为“IDC_BUTTON_START”,Caption为“开始” 在OnInitDialog中添加如下代码:CProgressCtrl* pProg =(CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);pProg-SetRange(0, 100);pProg-SetPos(50);为“开始”按钮添加点击事件实现代码:void CEx9_9Dlg:OnButtonStar() CProgressCtrl* pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1); pProg-SetP

16、os(0); SetTimer(1000,100,NULL); 61在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(nID

17、Event); 每隔0.1秒,进度条前进一步 629.7.4 Slider控件的使用 滑块控件可以使用户通过拖动滑块来快速获得指定的数据。当用户滑动滑块的时候,控件将发送消息来指示变化。 滑块控件在选择一系列离散值或者一段连续范围内的情况下十分有用。 63 在对话框上增加一个Slider控件,设置Point属性为“Bottom/Right”,然后在旁边添加一个Static控件,ID设置为IDC_STATIC_SLIDER。该控件用来显示滑块的当前位置。 在OnInitDialog函数中添加如下代码:CString strText1;CSliderCtrl* pSlide1 =(CSliderC

18、trl*) GetDlgItem(IDC_SLIDER1);pSlide1-SetRange(0, 100);pSlide1-SetPos(50);strText1.Format(%d, pSlide1-GetPos();SetDlgItemText(IDC_STATIC_SLIDER, strText1); 64 为了响应滑块移动的消息,添加WM_HSCROLL消息的响应(Slider是水平的,如果是垂直的,则需要响应WM_VSCROLL)。实现如下: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); 659.7.5 Date Time Pic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论