ImageVerifierCode 换一换
格式:PPT , 页数:22 ,大小:186.50KB ,
资源ID:5698534      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5698534.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第13章 制作含滚动条的应用程序.ppt)为本站会员(weiwoduzun)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

第13章 制作含滚动条的应用程序.ppt

1、第13章 制作含滚动条的应用程序,滚动条是一个交互式的、高度可视化的控件,它包括一个滑块、滚动条的两端的按钮等。,滚动条控件与属于窗口的滚动条是不一样的,处于窗口的滚动条是由该窗口创建、管理和释放的,滚动条控件是由用户创建、管理和释放的,13.1 滚动条类简介,作为任何一个窗口的子控件,滚动条可以通过通知代码来创建,但也可以用对话框资源模板来创建。,创建与初始化滚动条类,在设置滚动条控件时,要通过CScrollBar:SetScrollRange()设置其范围。例如,设置滚动范围为-100到100的垂直滚动条: pMyScroll-SetScrollRange(SB_VERT,-100,100

2、);,在设置了范围后,还要通过SetScrollPos()设置滚动块当前位置。例如,滚动块的位置在-100到100的中间,即为0的位置: pMyScroller-SetScrollPos(0);,13.2 滚动条类编程实例,1. 应用程序的可视化编程部分,2. 应用程序的代码编程部分,(1 )给滚动条连接变量,ID 变量名 类别 类型 IDC_SCROLLBAR m_Scrollbar Control Cscrollbar IDC_EDITl m_Edit Control CEdit,BOOL CSCROLLBARDlg:OnInitDialog() CDialog:OnInitDialog(

3、);/将“About.”菜单项加入到系统菜单中。/IDM_ABOUTBOX必须在系统命令范围内。ASSERT(IDM_ABOUTBOX ,(2)初始化滚动条,/为该对话框设置图标,当该应用程序的主窗口不是一个对话框时,程序将自动设置图标SetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small iconm_Scrollbar.SetScrollRange(0,20);m_Scrollbar.SetScrollPos(10);char sPos10;itoa(m_Scrollbar.GetScrollPos

4、(),sPos,10);/数值转成字符m_Edit.SetSel(0,-1);m_Edit.ReplaceSel(sPos);UpdateData(FALSE); return TRUE; / return TRUE unless you set the focus to a control ,(3 )给滚动条消息添加代码,void CSCROLLBARDlg:OnVScroll(UINT nSBCode, UINT nPos,CScrollBar* pScrollBar) char sPos10; int iNowPos;switch(nSBCode) if(pScrollBar=,case

5、 SB_PAGEDOWN: /单击滚动条下面的箭头与滚动块之间的区域iNowPos=m_Scrollbar.GetScrollPos();iNowPos=iNowPos+3;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.GetScr

6、ollPos();iNowPos=iNowPos-3;if(iNowPos0)iNowPos=0;m_Scrollbar.SetScrollPos(iNowPos);itoa(m_Scrollbar.GetScrollPos(),sPos,10);m_Edit.SetSel(0,-1);m_Edit.ReplaceSel(sPos); break; CDialog:OnVScroll(nSBCode, nPos, pScrollBar); ,(4 )给Exit按钮连接代码,void CSELECTBOXDlg:OnExitButton() / 在此处加入控件通知句柄代码/编写代码开始OnOK(

7、);/编写代码结束 ,(5 )给Up按钮添代码,void CSCROLLBARDlg:OnUpButton() / TODO:在此处加入控件通知句柄代码/代码编写开始m_Scrollbar.SetScrollPos(0);m_Edit.SetSel(0,-1);m_Edit.ReplaceSel(“0“);/代码编写结束 ,(6) 给 Down按钮添加代码,void CSCROLLBARDlg:OnDownButton() / TODO: 在此处加入通知句柄代码m_Scrollbar.SetScrollPos(20);m_Edit.SetSel(0,-1);m_Edit.ReplaceSel(

8、“20“); ,(7 )给Reset按钮添加代码,void CSCROLLBARDlg:OnResetButton() / TODO: 在此处加入通知句柄代码m_Scrollbar.SetScrollPos(10);m_Edit.SetSel(0,-1);m_Edit.ReplaceSel(“10“); ,创建如图界面,单击“开始”按钮时,按照顺序执行各项操作,在执行完的操作前加对号标志,在正在进行的操作前加箭头标志。,(1)AppWizardAppWizard Step1Dialog based其余默认(2)打开对话框编辑器 将“确定”和“取消”通过Properties“开始” 和“退出”,

9、将“确定”按钮ID改为ID_BEGIN,(3)在Control工具条上选Picture按钮-创建一个空的图片框-Insert菜单-Resource菜单项-在Resource type框中选中Bitmap选项-Import-加入bmp文件-在Properties中的type中选位图-接受默认的ID值-图片框中出现位图,(4)在Control工具条中选择List Control按钮-画一个列表框控件-在其上单击鼠标右键选择Property菜单项-将ID改为IDC_LISTCTRL1,注意还要选中Disabled选项,(5) 在Control工具条中选择Progress按钮画一个进度条控件-在其上单

10、击鼠标右键选择Property菜单项-将ID改为IDC_PROGRESS1,注意还要选中Disabled选项。,(6) Insert菜单Resource菜单项Resource type列表框中的Icon项单击Import按钮加入Res文件夹中的arrow.ico,empty.ico,finished.ico三个文件将ID值改为IDI_ICON_ARROW, IDI_ICON_EMPTY, IDI_ICON_FINISHED,给控件连接的变量 控件ID 变量类型 变量名 IDC_LISTCTRL1 ClistCtrl m_ListCtrl1 IDC_PROGRESS1 CprogressCtrl

11、 m_Progress,加入的变量 变量类型 变量名 说明 HICON hIcon7 存储图像列表中各图标句柄的数组 CString ProcName7 存储列表控件中字符信息 CImageList m_ImageList 图像列表对象 int m_nCurProc 当前操作过程的号码 int m_nProgress 进度条的位置,ClassView卡 在13_5Dlg类上 单击鼠标右键 Add member variable,打开13_5Dlg.cpp文件,在构造函数中加入初始化变量的代码:/初始化变量m_nCurProc = 1; m_nProgress = 0;/列表框中的操作的名称Pr

12、ocName0=“ “; ProcName1=“ Checking Partition Table“;ProcName2=“ Checking Boot Record“;ProcName3=“ Checking File System“;ProcName4=“ Checking Directories“;ProcName5=“ Checking Compressed Disks“;ProcName6=“ Checking Disk Surface“;,在初始化函数OnInitDialog()中加入代码: int n; m_ImageList.Create(16,16,0,7,7);/创建图像列

13、表对象,图标大小为1616 hIcon0 = AfxGetApp()-LoadIcon(IDI_ICON_ARROW); /加载图标 hIcon1 = AfxGetApp()-LoadIcon(IDI_ICON_EMPTY); hIcon2 = AfxGetApp()-LoadIcon(IDI_ICON_EMPTY); hIcon3 = AfxGetApp()-LoadIcon(IDI_ICON_EMPTY); hIcon4 = AfxGetApp()-LoadIcon(IDI_ICON_EMPTY); hIcon5 = AfxGetApp()-LoadIcon(IDI_ICON_EMPTY)

14、; hIcon6 = AfxGetApp()-LoadIcon(IDI_ICON_EMPTY); for(n=0;n7;n+) m_ImageList.Add(hIconn); /将图标加入图像列表 /在列表控件中加入图象列表 m_ListCtrl1.SetImageList( /设置进度条的位置,(7)单击“开始”按钮,按照顺序执行列表框中的各项操作,可以通过设置定时器的办法来完成这项功能。单击Ctrl+W打开ClassWizard对话框,选择Message Maps卡,映射如下的消息处理函数。 ID 消息类型 消息处理函数 ID_BEGIN BN_CLICKED OnBegin() CMy

15、13_5Dlg WM_TIMER OnTimer() 在OnBegin()函数中加入代码如下: m_nCurProc=1; m_nProgress=0; SetTimer(1,10,NULL); /设置定时器 /改变题头的图标 hIcon0 = AfxGetApp()-LoadIcon(IDI_ICON_EMPTY); /加载图标 m_ImageList.Replace(0,hIcon0); /替换原有的图标 m_ListCtrl1.DeleteItem(0); /从列表控件中删除一项 m_ListCtrl1.InsertItem(0,(LPCTSTR)ProcName0,0); /列表中加入

16、一项 /改变第一项的图标 hIcon1 = AfxGetApp()-LoadIcon(IDI_ICON_ARROW); m_ImageList.Replace(1,hIcon1); m_ListCtrl1.DeleteItem(1); m_ListCtrl1.InsertItem(1,(LPCTSTR)ProcName1,1); GetDlgItem(ID_BEGIN)-EnableWindow(0); /使“开始”按钮不可用,调用函数SetTimer()创建定时器,该定时器每隔0.01秒发送WM_TIMER消息。调用函数LoadIcon()加载空图标,然后调用函数Replace()替换图象列

17、表中的题头的图标。为了改变列表控件中显示的图标,还需要调用函数DeleteItem()从列表控件中删除第0项,并调用函数InsertItem()在列表控件中加入对应空图标的一项。同理可以改变第一项的图标。最后调用函数EnableWindow()使“开始”按钮不可用。,下述代码中首先根据当前操作号改变进度条的位置,并调用函数SetPos()设置进度条的位置。当m_nProgress300时,表明当前操作已完成,跟前面的操作过程相同,调用函数改变当前操作项前的图标为一个对号。然后将进度条位置清零,操作号码加1,此时还需要调用函数将当前操作前的图标改为一个箭头。如果当前操作号大于6表明所有的操作已完

18、成,调用函数KillTimer()删除定时器,最后调用函数MessgeBox()弹出一个消息对话框,显示操作的结果。,在OnTimer()函数中加入代码如下: m_nProgress+=int(6.0/m_nCurProc); /进度条位置增加 m_Progress.SetPos(m_nProgress); if(m_nProgress=300) /改变刚完成的操作项的图标 hIconm_nCurProc = AfxGetApp()-LoadIcon(IDI_ICON_FINISHED); m_ImageList.Replace(m_nCurProc,hIconm_nCurProc); m_L

19、istCtrl1.DeleteItem(m_nCurProc); m_ListCtrl1.InsertItem(m_nCurProc,(LPCTSTR)ProcNamem_nCurProc,m_nCurProc); m_nProgress=0; /设置进度条位置 m_nCurProc+; /设置当前操作项的号码 /设置正在进行的操作项的图标 hIconm_nCurProc = AfxGetApp()-LoadIcon(IDI_ICON_ARROW); m_ImageList.Replace(m_nCurProc,hIconm_nCurProc); m_ListCtrl1.DeleteItem(m_nCurProc); m_ListCtrl1.InsertItem(m_nCurProc,(LPCTSTR)ProcNamem_nCurProc,m_nCurProc); if(m_nCurProc6) KillTimer(1); /操作完成后删除定时器 MessageBox(“There are no errors in your systems“,“警告“,MB_ICONWARNING); ,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报