|
修饰符
|
应用于
|
说明
|
|
public
|
所有的类型或成员
|
任何代码均可以访问该成员
|
|
protected
|
类型和内嵌类型(即在一个类中定义的类)的所有成员
|
只有派生的类型能访问该成员
|
|
internal
|
类型和内嵌类型的所有成员
|
只能在包含它的程序集中访问该成员
|
|
private
|
所有的类型或成员
|
只能在它所属的类型中访问该成员
|
|
protected internal
|
类型和内嵌类型的所有成员
|
能在包含它的程序集或派生类型中访问该成员
|
|
|
|
|
|
new
|
函数成员
|
成员用相同的签名隐藏继承的成员
|
|
static
|
所有的成员
|
成员不在类的具体实例中执行
|
|
virtual
|
仅函数成员
|
成员可以由派生类重写
|
|
abstract
|
类和函数成员
|
抽象成员定义了成员的签名,但没有提供实现代码
|
|
override
|
仅函数成员
|
成员重写了继承的虚拟或抽象成员
|
|
sealed
|
类
|
成员重写了继承的虚拟成员,但继承该类的任何类都不能重写该成员。必须与override一起使用
|
|
extern
|
仅静态[DllImport]方法
|
成员在外部用另一种语言实现
|
Archive for the Category »笔记 «
前两天看的内容先不做了,有复习的时候看到有价值的再放上来,今天看到一个有意思的,先弄上来省得以后翻书忘了~~我想读书笔记的作用就在于此吧,把自己认为有用的记录下来,以后就不用常翻书了,翻一本书是一本实在痛苦的事情……
[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]

最近评论