前两天看的内容先不做了,有复习的时候看到有价值的再放上来,今天看到一个有意思的,先弄上来省得以后翻书忘了~~我想读书笔记的作用就在于此吧,把自己认为有用的记录下来,以后就不用常翻书了,翻一本书是一本实在痛苦的事情……
[quote]
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, TURE );
[/quote]
这样做以后Windows会把最大的滚动条位置设置为si.nMax – si.nPage + 1,而不是nMax,这就和直接用SetScrollRange不同了,用这个函数的最基本用法就是:
[quote]
SetScrollRange( hwnd, SB_VERT, 0, NUMLINES – 1, FALSE );
SetScrollPos( hwnd, SB_VERT, iVScrollPos, TRUE );
[/quote]
这样做会引起一个问题,就是当滚动条的位置是0的时候,第一行信息显示在客户区的顶部(这当然是没问题的,也符合我们平时的使用),可是如果当滚动条的位置是NUMLINES – 1时,最后一行显示在客户区的顶部,并且看不见其他行,这就和平时我们用的有点区别的了,我们平时使用时是最后一行显示在最后一行,并且此时滚动条已经到底了,而如果要用SDK实现这个功能就要改一下
[quote]
iVScrollMax = max( 0, NUMLINES – cyClinet / cyChar );
SetScrollRange( hwnd, SB_VERT, 0, iVScrollMax, TRUE );
[/quote]
这实在是有一点麻烦,但是SetScrollRange用MSDN里面的话是provides a backward compability,所以两种方法还是要掌握的,当然在XP下SetScrollInfo优先~~[lol]

哈哈~看来大家都转移阵地了…SH真TMD冷死了…去年这会还很热的啊!!!变态天气…SB这学期好好加油哦!!!因为韵如可能又要拿奖学金咯!!!嘿嘿[razz]
[heart]好强~其实spacex现在没原来刚改版时那么恐怖了~不用代码的部分都运行正常~
呵呵~我们那边没事没事~有的事也早过去了……
恩~blog~转移阵地大吉~
TO:如,- -'要请客!~~
TO:姐,主要是想要有一个可以自主的空间~^O^