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

上传人:牧羊曲112 文档编号:4850366 上传时间:2023-05-19 格式:PPT 页数:22 大小:285.99KB
返回 下载 相关 举报
制作含滚动条的应用程序.ppt_第1页
第1页 / 共22页
制作含滚动条的应用程序.ppt_第2页
第2页 / 共22页
制作含滚动条的应用程序.ppt_第3页
第3页 / 共22页
制作含滚动条的应用程序.ppt_第4页
第4页 / 共22页
制作含滚动条的应用程序.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《制作含滚动条的应用程序.ppt》由会员分享,可在线阅读,更多相关《制作含滚动条的应用程序.ppt(22页珍藏版)》请在三一办公上搜索。

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_SCROLLBARm_ScrollbarControlCscrollbarIDC_EDITlm_EditControlCEdit,BOOL CSCROLLBARDlg:OnInitDialog()CDialog:OnInitDialog();/将“About.”菜单项加

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

4、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 SB_PAGEDOWN:/单击滚动条下面的箭头与滚动块之

5、间的区域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.GetScrollPos();iNowPos=iNowPos-3;if(iNo

6、wPos0)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();/编写代码结束,(5)给Up按钮添代码,void CSCROLLBARDlg:

7、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(20);,(7)给Reset按钮添加代码,void CSCROLLBARDlg:OnResetButto

8、n()/TODO:在此处加入通知句柄代码m_Scrollbar.SetScrollPos(10);m_Edit.SetSel(0,-1);m_Edit.ReplaceSel(10);,创建如图界面,单击“开始”按钮时,按照顺序执行各项操作,在执行完的操作前加对号标志,在正在进行的操作前加箭头标志。,(1)AppWizard-AppWizard Step1-Dialog based-其余默认(2)打开对话框编辑器-将“确定”和“取消”通过Properties“开始”和“退出”,-将“确定”按钮ID改为ID_BEGIN,(3)在Control工具条上选Picture按钮-创建一个空的图片框-Ins

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

10、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_LISTCTRL1ClistCtrlm_ListCtrl1IDC_PROGRESS1CprogressCtrlm_Progress,加入的变量变量类型变量名说明HICONhIcon7存储图像列表中各图标句柄的数组CStringProcNam

11、e7存储列表控件中字符信息CImageListm_ImageList图像列表对象intm_nCurProc当前操作过程的号码intm_nProgress进度条的位置,ClassView卡-在13_5Dlg类上单击鼠标右键-Add member variable,打开13_5Dlg.cpp文件,在构造函数中加入初始化变量的代码:/初始化变量m_nCurProc=1;m_nProgress=0;/列表框中的操作的名称ProcName0=;ProcName1=Checking Partition Table;ProcName2=Checking Boot Record;ProcName3=Check

12、ing File System;ProcName4=Checking Directories;ProcName5=Checking Compressed Disks;ProcName6=Checking Disk Surface;,在初始化函数OnInitDialog()中加入代码:int n;m_ImageList.Create(16,16,0,7,7);/创建图像列表对象,图标大小为1616hIcon0=AfxGetApp()-LoadIcon(IDI_ICON_ARROW);/加载图标hIcon1=AfxGetApp()-LoadIcon(IDI_ICON_EMPTY);hIcon2=A

13、fxGetApp()-LoadIcon(IDI_ICON_EMPTY);hIcon3=AfxGetApp()-LoadIcon(IDI_ICON_EMPTY);hIcon4=AfxGetApp()-LoadIcon(IDI_ICON_EMPTY);hIcon5=AfxGetApp()-LoadIcon(IDI_ICON_EMPTY);hIcon6=AfxGetApp()-LoadIcon(IDI_ICON_EMPTY);for(n=0;n7;n+)m_ImageList.Add(hIconn);/将图标加入图像列表/在列表控件中加入图象列表m_ListCtrl1.SetImageList(/设

14、置进度条的位置,(7)单击“开始”按钮,按照顺序执行列表框中的各项操作,可以通过设置定时器的办法来完成这项功能。单击Ctrl+W打开ClassWizard对话框,选择Message Maps卡,映射如下的消息处理函数。ID消息类型消息处理函数ID_BEGINBN_CLICKEDOnBegin()CMy13_5DlgWM_TIMEROnTimer()在OnBegin()函数中加入代码如下:m_nCurProc=1;m_nProgress=0;SetTimer(1,10,NULL);/设置定时器/改变题头的图标hIcon0=AfxGetApp()-LoadIcon(IDI_ICON_EMPTY);

15、/加载图标m_ImageList.Replace(0,hIcon0);/替换原有的图标m_ListCtrl1.DeleteItem(0);/从列表控件中删除一项m_ListCtrl1.InsertItem(0,(LPCTSTR)ProcName0,0);/列表中加入一项/改变第一项的图标hIcon1=AfxGetApp()-LoadIcon(IDI_ICON_ARROW);m_ImageList.Replace(1,hIcon1);m_ListCtrl1.DeleteItem(1);m_ListCtrl1.InsertItem(1,(LPCTSTR)ProcName1,1);GetDlgIte

16、m(ID_BEGIN)-EnableWindow(0);/使“开始”按钮不可用,调用函数SetTimer()创建定时器,该定时器每隔0.01秒发送WM_TIMER消息。调用函数LoadIcon()加载空图标,然后调用函数Replace()替换图象列表中的题头的图标。为了改变列表控件中显示的图标,还需要调用函数DeleteItem()从列表控件中删除第0项,并调用函数InsertItem()在列表控件中加入对应空图标的一项。同理可以改变第一项的图标。最后调用函数EnableWindow()使“开始”按钮不可用。,下述代码中首先根据当前操作号改变进度条的位置,并调用函数SetPos()设置进度条的

17、位置。当m_nProgress300时,表明当前操作已完成,跟前面的操作过程相同,调用函数改变当前操作项前的图标为一个对号。然后将进度条位置清零,操作号码加1,此时还需要调用函数将当前操作前的图标改为一个箭头。如果当前操作号大于6表明所有的操作已完成,调用函数KillTimer()删除定时器,最后调用函数MessgeBox()弹出一个消息对话框,显示操作的结果。,在OnTimer()函数中加入代码如下:m_nProgress+=int(6.0/m_nCurProc);/进度条位置增加m_Progress.SetPos(m_nProgress);if(m_nProgress=300)/改变刚完成

18、的操作项的图标hIconm_nCurProc=AfxGetApp()-LoadIcon(IDI_ICON_FINISHED);m_ImageList.Replace(m_nCurProc,hIconm_nCurProc);m_ListCtrl1.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);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号