第13章制作含滚动条的应用程序教案资料

上传人:yuzo****123 文档编号:139092332 上传时间:2020-07-19 格式:PPT 页数:22 大小:317.50KB
返回 下载 相关 举报
第13章制作含滚动条的应用程序教案资料_第1页
第1页 / 共22页
第13章制作含滚动条的应用程序教案资料_第2页
第2页 / 共22页
第13章制作含滚动条的应用程序教案资料_第3页
第3页 / 共22页
第13章制作含滚动条的应用程序教案资料_第4页
第4页 / 共22页
第13章制作含滚动条的应用程序教案资料_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《第13章制作含滚动条的应用程序教案资料》由会员分享,可在线阅读,更多相关《第13章制作含滚动条的应用程序教案资料(22页珍藏版)》请在金锄头文库上搜索。

1、第13章 制作含滚动条的应用程序,滚动条是一个交互式的、高度可视化的控件,它包括一个滑块、滚动条的两端的按钮等。,滚动条控件与属于窗口的滚动条是不一样的,处于窗口的滚动条是由该窗口创建、管理和释放的,滚动条控件是由用户创建、管理和释放的,13.1 滚动条类简介,作为任何一个窗口的子控件,滚动条可以通过通知代码来创建,但也可以用对话框资源模板来创建。,创建与初始化滚动条类,13.2 滚动条类编程实例,1. 应用程序的可视化编程部分,2. 应用程序的代码编程部分,(1 )给滚动条连接变量,ID变量名类别 类型 IDC_SCROLLBARm_ScrollbarControlCscrollbar ID

2、C_EDITlm_EditControlCEdit,BOOL CSCROLLBARDlg:OnInitDialog() CDialog:OnInitDialog(); /将“About.”菜单项加入到系统菜单中。 /IDM_ABOUTBOX必须在系统命令范围内。 ASSERT(IDM_ABOUTBOX ,(2)初始化滚动条,/为该对话框设置图标,当该应用程序的主窗口不是一个对话框时,程序将自动设置图标 SetIcon(m_hIcon, TRUE);/ Set big icon SetIcon(m_hIcon, FALSE);/ Set small icon m_Scrollbar.SetScr

3、ollRange(0,20); m_Scrollbar.SetScrollPos(10); char sPos10; itoa(m_Scrollbar.GetScrollPos(),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, UIN

4、T nPos, CScrollBar* pScrollBar) char sPos10; int iNowPos; switch(nSBCode) if(pScrollBar=,case 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

5、,-1); m_Edit.ReplaceSel(sPos); break; case SB_PAGEUP:/单击滚动条上面的箭头与滚动块之间的区域 iNowPos=m_Scrollbar.GetScrollPos(); 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

6、(nSBCode, nPos, pScrollBar); ,(4 )给Exit按钮连接代码,void CSELECTBOXDlg:OnExitButton() / 在此处加入控件通知句柄代码 /编写代码开始 OnOK(); /编写代码结束 ,(5 )给Up按钮添代码,void CSCROLLBARDlg:OnUpButton() / TODO:在此处加入控件通知句柄代码 /代码编写开始 m_Scrollbar.SetScrollPos(0); m_Edit.SetSel(0,-1); m_Edit.ReplaceSel(0); /代码编写结束 ,(6) 给 Down按钮添加代码,void CS

7、CROLLBARDlg:OnDownButton() / TODO: 在此处加入通知句柄代码 m_Scrollbar.SetScrollPos(20); m_Edit.SetSel(0,-1); m_Edit.ReplaceSel(20); ,(7 )给Reset按钮添加代码,void CSCROLLBARDlg:OnResetButton() / TODO: 在此处加入通知句柄代码 m_Scrollbar.SetScrollPos(10); m_Edit.SetSel(0,-1); m_Edit.ReplaceSel(10); ,创建如图界面,单击“开始”按钮时,按照顺序执行各项操作,在执行

8、完的操作前加对号标志,在正在进行的操作前加箭头标志。,(1)AppWizard-AppWizard Step1-Dialog based-其余默认 (2)打开对话框编辑器 - 将“确定”和“取消”通过Properties“开始” 和“退出”,-将“确定”按钮ID改为ID_BEGIN,(3)在Control工具条上选Picture按钮-创建一个空的图片框-Insert菜单-Resource菜单项-在Resource type框中选中Bitmap选项-Import-加入bmp文件-在Properties中的type中选位图-接受默认的ID值-图片框中出现位图,(4)在Control工具条中选择Li

9、st Control按钮-画一个列表框控件-在其上单击鼠标右键选择Property菜单项-将ID改为IDC_LISTCTRL1,注意还要选中Disabled选项,(5) 在Control工具条中选择Progress按钮-画一个进度条控件-在其上单击鼠标右键选择Property菜单项-将ID改为IDC_PROGRESS1,注意还要选中Disabled选项。,(6) Insert菜单-Resource菜单项-Resource type列表框中的Icon项-单击Import按钮-加入Res文件夹中的arrow.ico,empty.ico,finished.ico三个文件-将ID值改为IDI_ICON

10、_ARROW, IDI_ICON_EMPTY, IDI_ICON_FINISHED,给控件连接的变量 控件ID变量类型变量名 IDC_LISTCTRL1ClistCtrlm_ListCtrl1 IDC_PROGRESS1CprogressCtrlm_Progress,加入的变量 变量类型变量名说明 HICONhIcon7存储图像列表中各图标句柄的数组 CStringProcName7存储列表控件中字符信息 CImageListm_ImageList图像列表对象 intm_nCurProc当前操作过程的号码 intm_nProgress进度条的位置,ClassView卡- 在13_5Dlg类上

11、单击鼠标右键 -Add member variable,打开13_5Dlg.cpp文件,在构造函数中加入初始化变量的代码: /初始化变量 m_nCurProc = 1; m_nProgress = 0; /列表框中的操作的名称 ProcName0= ;ProcName1= Checking Partition Table; ProcName2= Checking Boot Record; ProcName3= Checking File System; ProcName4= Checking Directories; ProcName5= Checking Compressed Disks;

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

13、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(/设置进度条的位置,(7)单击“开始”按钮,按照顺序执行列表框中的各项操作,可以通过设置定时器的办法来完成这项功能

14、。单击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);/加载图标 m_ImageList.Replace(0,hIcon0);/替换原有的图标

15、 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); GetDlgItem(ID_BEGIN)-EnableWindow(0); /使“开

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号