- 1、本文档共164页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章--控件 清华大学计算机与信息管理中心黄维通 第9章 Windows 标准控件在可视化编程中的应用 控件是Windows 图形用户界面的主要组成部分之一,用户通过操作控件对象完成与应用程序之间的交互。控件的使用集中体现了Windows 系统面向对象的特点 9.1概述 打开对话框编辑器就会出现控件工具栏(231页图) 9.2 按钮控件及其应用 按钮控件消息: ON_BN_CLICKED ON_BN_DBLCLICKED ON_COMMAND 9.2.1 按钮控件的创建过程 GetCheck( ) SetCheck( ) GetBitmap() SetBitmap() GetButtonStyle() SetButtonStyle() GetCursor() SetCursor() GetIcon() SetIcon() GetState() SetState() MFC还提供了一个CBitmapButton的类,允许用户以图标的方式显示按钮,它是在CButtong下派生的 9.2.2 按钮控件示例 void CMy9_1Dlg::OnButton1() { m_btn1.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); } 9.3 滚动条控件 9.3.1 滚动条类的结构及其方法 9.3.2 创建与初始化滚动条类 9.3.3滚动条类编程实例 BOOL CMy9_2Dlg::OnInitDialog() { CDialog::OnInitDialog(); …… // TODO: Add extra initialization here m_Scrollbar.SetScrollRange(0,20); m_Scrollbar.SetScrollPos(10); char sPos[10]; itoa(m_Scrollbar.GetScrollPos(),sPos,10); m_Edit.SetSel(0,-1); m_Edit.ReplaceSel(sPos); UpdateData(FALSE); return TRUE; } (3) 给滚动条消息添加代码 在Class Wizard中的Object IDs列表框中选控件的ID值,在Message列表框中选WM_VSCROLL选项,此即为垂直滚动条的消息,为此消息加上一个成员函数OnVScroll(),在该函数中对滚动条不同的动作(209页表9-7)做出不同的响应。 在一个对话框中,不论有几个垂直滚动条,只添加一个成员函数OnVScroll(),不论有几个水平滚动条,只添加一个成员函数OnHScroll()。 (3) 给滚动条消息添加代码 void CMy9_2Dlg::OnVScroll(……) { // TODO: Add your message handler code here char sPos[10]; int iNowPos; switch(nSBCode) { if(pScrollBar==m_Scrollbar) { case SB_THUMBTRACK: //拖动滑块 m_Scrollbar.SetScrollPos(nPos); itoa(nPos,sPos,10); m_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: //单击滚动条向上的箭头 iNowPos=m_Scrollbar.Get
文档评论(0)