码迷,mamicode.com
首页 > 其他好文 > 详细

SCROLLINFO结构体中fMask和nPage的理解

时间:2018-05-26 14:01:58      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:ack   属性表   设定   lin   应该   def   信息   ons   scroll   

还是VC++中有关显示图像的问题。

我们在显示一幅比较大的图像时,要使用带标准滚动条的对话框。涉及对滚动条的操作就不得不提SCROLLINFO这个结构体。只看单词意思就这道这个结构体要储存滚动条的一些信息。究竟是哪些信息呢?我们先看看这个结构体的定义:

typedef struct tagSCROLLINFO
{
  UINT cbSize ;   // SCROLLINFO结构体长度的字节数
  UINT fMask ;    // 指定结构体中哪些成员有效
  int nMin;       // 滚动范围最小尺寸
  int nMax;        // 滚动范围的最小尺寸
  UINT nPage ;        // 页尺寸,用来确定比例滚动框的大小
  int nPos ;     // 滚动框的位置
  int nTrackPos ;   //
}SCROLLINFO,*LPSCROLLINFO;
typedef SCROLLINFO CONST *LPCSCROLLINFO
 
好了,与其说这个结构体储存的是滚动条的信息,不如说它储存了滚动块的信息。滚动块就是滚动条上的那个滑块。下面我们具体说说这个结构体中几个成员的含义。
首先,fMask,指定哪些成员有效,它的值是这些常亮:SIF_ALL,表示整个结构体都有效,SIF_PAGE,表示nPage成员有效,SIF_POS:nPos成员有效,SIF_RANGE, nMax和nMin有效。这些常量可以用或连接。
nMin:这个值我们通常都设定为0
nMax: 对于这个值,如果我们想在整个客户区显示一个比客户区还要大的图片,这个值就应该等于图片大小和客户区大小的差(水平和竖直两个方向上)
nPage:这个属性表示页尺寸,怎么理解这个属性呢。首先,它的设置是为了根据比例确定滚动块的大小。这个值通常就取客户区的大小。但是要特别注意:当nMax<=nPage时,这时候如果使用nPage属性,将不会显示滚动条!!!!前面说过,nPage的设置是为了根据比例设置滚动块的大小。我们平时看到的滚动条的滚动块有大有小,有的滚动块的大小还会随着浏览篇幅的变化而变化。与这个nPage属性有很大关系。但是:nMax<=nPage不代表没有必要使用滚动条,只要nMax>nMin ,就是需要滚动条的,但是当nMax<nPage时,我们通常不设置nPage 属性(设置分fMask时不选SIF_PAGE),这样就可以显示出滚动条了,只不过滚动块的大小是标准大小,不是根据比例确定的大小而已。

SCROLLINFO结构体中fMask和nPage的理解

标签:ack   属性表   设定   lin   应该   def   信息   ons   scroll   

原文地址:https://www.cnblogs.com/weekbo/p/9092672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!