前两天看的内容先不做了,有复习的时候看到有价值的再放上来,今天看到一个有意思的,先弄上来省得以后翻书忘了~~我想读书笔记的作用就在于此吧,把自己认为有用的记录下来,以后就不用常翻书了,翻一本书是一本实在痛苦的事情……

[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]

Category: 笔记
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
3 Responses
  1. 如如 说道:

    哈哈~看来大家都转移阵地了…SH真TMD冷死了…去年这会还很热的啊!!!变态天气…SB这学期好好加油哦!!!因为韵如可能又要拿奖学金咯!!!嘿嘿[razz]

  2. 煮竹 说道:

    [heart]好强~其实spacex现在没原来刚改版时那么恐怖了~不用代码的部分都运行正常~
    呵呵~我们那边没事没事~有的事也早过去了……
    恩~blog~转移阵地大吉~

  3. 浪漫如枫 说道:

    TO:如,- -'要请客!~~

    TO:姐,主要是想要有一个可以自主的空间~^O^

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>