第25周-window程序设计(基础篇)-第4章-滚动条新功能

1、滚动条新功能:

/*为了使快速更新显示区域:可先呼叫InvalidateRect,使其区域无效,再呼叫UpdateWindow(hwnd)*/
/*滚动条文件:滚动条文件(在/Platform SDK/User Interface Services/Controls/Scroll Bars中)指出SetScrollRange、

SetScrollPos、GetScrollRange和GetScrollPos函数。在Win32 API中升级以处理32位参数。
而Win32 API介绍的两个滚动条函数称作SetScrollInfo和GetScrollInfo。这些函数可以完成以前函数的全部功能,并增加了两个新特性。*/

/*SetScrollInfo:第一个功能涉及卷动方块的大小;GetScrollInfo的功能:通过GetScrollInfo函数可以取得真实的32位值。*/
卷动方块大小/滚动长度 = 页面大小/范围 = 显示文件数量/文件总大小 
SetScrollInfo(hwnd,iBar,&si,bRedraw);
GetScrollInfo(hwnd,iBar,&si);

/*iBar参数是SB_VERT或SB_HORZ,它还可以是用于滚动条控制的SB_CTL。SetScrollInfo的最后一个参数可以
是TRUE或FALSE,指出了是否要Windows重新绘制计算了新信息后的滚动条。*/

/*第三个参数中的SCROLLINFO结构定义*/
typedef struct tagSCROLLINFO
 {
   UINT cbSize; //set to sizeof(SCROLLINFO)结构大小
   UINT fmask;//values to set or get
   int nMin; //minimum range value
   int nMax;  
   UINT nPage; //page size;
   int nPos;
   int nTrackPos;//current tracking posing滑块当前位置
  }
 SCROLLINFO,*PSCORLLINFO;

//注意:第一个字段指出结构大小。此字段使将来的Windows版本可以扩充结构并添加新的功能,并且仍然与以前编译的版本兼容。
//该结构形态的定义:SCROLLINFO si;
//呼叫两函数前,设定cbSize大小: si.cbSize = size(si)或si.cbSize = size(SCROLLINFO);

/*对SYSMETRS2的修改*/
iVscrollMax = max(0,NUMLINES-cyClient/cyChar);
SetScorllRange = (hwnd,SB_VERT,0,iVscrollMax,TRUE);
//假设NUMLINES等于75。cyClient/cyChar为50,则max(0,25),即75行信息但只有50行可以显示在显示区域中。

/*SCROLLINFO结构和SetScorllinfo:*/
si.cbSize = sizeof(SCROLLINFO);
si.cbMask = SIF_RANGE|SIF_PAGE;
si.nMin = 0;
si.nMax = NUMLINES - 1;
si.nPage = cyClient/cyChar;
SetScrollInfo(hwnd,SB_VERT,&si,TRUE);

//结果为Windows会把最大的滚动条位置限制为si.nMax - si.nPage +1而不是si.nMax。74-50+1=25。
单词:info信息、current当前、mask隐藏(面具)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值