Windows编程之滚动条—滚动条卷动范围.pdf

Windows编程之滚动条—滚动条卷动范围.pdf

ID:52241286

大小:94.05 KB

页数:13页

时间:2020-03-25

Windows编程之滚动条—滚动条卷动范围.pdf_第1页
Windows编程之滚动条—滚动条卷动范围.pdf_第2页
Windows编程之滚动条—滚动条卷动范围.pdf_第3页
Windows编程之滚动条—滚动条卷动范围.pdf_第4页
Windows编程之滚动条—滚动条卷动范围.pdf_第5页
资源描述:

《Windows编程之滚动条—滚动条卷动范围.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Windows编程之滚动条—滚动条卷动范围在SYSMETS2中,卷动范围设置最小为0,最大为NUMLINES-1。当滚动条位置是0时,第一行信息显示在显示区域的顶部;当滚动条的位置是NUMLINES-1时,最后一行显示在显示区域的顶部,并且看不见其它行。可以说SYSMETS2卷动范围太大。事实上只需把信息最后一行显示在显示区域的底部而不是顶部即可。我们可以对SYSMETS2作出一些修改以达到此点。当处理WM_CREATE消息时不设置滚动条范围,而是等到接收到WM_SIZE消息后再做此工作:iVscrollMax=max(0,NU

2、MLINES-cyClient/cyChar);SetScrollRange(hwnd,SB_VERT,0,iVscrollMax,TRUE);假定NUMLINES等于75,并假定特定窗口大小是:50(cyChar除以cyClient)。换句话说,我们有75行信息但只有50行可以显示在显示区域中。使用上面的两行程序代码,把范围设置最小为0,最大为25。当滚动条位置等于0时,程序显示0到49行。当滚动条位置等于1时,程序显示1到50行;并且当滚动条位置等于25(最大值)时,程序显示25到74行。很明显需要对程序的其它部分做出修改,

3、但这是可行的。新滚动条函数的一个好的功能是当使用与滚动条范围一样大的页面时,它已经为您做掉了一大堆杂事。可以像下面的程序代码一样使用SCROLLINFO结构和SetScrollInfo:si.cbSize=sizeof(SCROLLINFO);si.cbMask=SIF_RANGE

4、SIF_PAGE;si.nMin=0;si.nMax=NUMLINES-1;si.nPage=cyClient/cyChar;SetScrollInfo(hwnd,SB_VERT,&si,TRUE);这样做之后,Windows会把最大的滚动条位置限制

5、为si.nMax-si.nPage+1而不是si.nMax。像前面那样做出假设:NUMLINES等于75(所以si.nMax等于74),si.nPage等于50。这意味着最大的滚动条位置限制为74-50+1,即25。这正是我们想要的。当页面大小与滚动条范围一样大时,会发生什么情况呢?在这个例子中,就是nPage等于75或更大的情况。Windows通常隐藏滚动条,因为它并不需要。如果不想隐藏滚动条,可在呼叫SetScrollInfo时使用SIF_DISABLENOSCROLL,Windows只是让那个滚动条不能被使用,而不隐藏它。

6、新SYSMETSSYSMETS3-此章中最后的SYSMETS程序版本-显示在程序4-4中。此版本使用SetScrollInfo和GetScrollInfo函数,添加左右卷动的水平滚动条,并能更有效地重画显示区域。程序4-4SYSMETS3SYSMETS3.C/*------------------------------------------------------------------SYSMETS3.C--SystemMetricsDisplayProgramNo.3(c)CharlesPetzold,1998-----

7、-----------------------------------------------------------*/#include#include"sysmets.h"LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){staticTCHARszAppName[]=TEXT("SysMe

8、ts3");HWNDhwnd;MSGmsg;WNDCLASSwndclass;wndclass.style=CS_HREDRAW

9、CS_VREDRAW;wndclass.lpfnWndProc=WndProc;wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hInstance=hInstance;wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);wndclass.hCursor=LoadCursor(NULL,IDC_ARROW)

10、;wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName=NULL;wndclass.lpszClassName=szAppName;if(!Registe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。