还是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的理解的更多相关文章

  1. C结构体中数据的内存对齐问题

    转自:http://www.cnblogs.com/qwcbeyond/archive/2012/05/08/2490897.html 32位机一般默认4字节对齐(32位机机器字长4字节),64位机一 ...

  2. 问题解决——在结构体中使用set保存结构体数据

    =====================声明========================== 本文原创,转载请明确的注明出处和作者,并保持文章的完整性(包括本声明部分). 本文链接:http:/ ...

  3. C语言 结构体中属性的偏移量计算

    //计算结构体偏移量 #include<stdio.h> #include<stdlib.h> #include<string.h> //详解:对于offscfof ...

  4. C语言 结构体中的成员域偏移量

    //C语言中结构体中的成员域偏移量 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...

  5. sturct stat 结构体中 st_mode 的含义

    工作中遇到 else if( (s_buf.st_mode&S_IFMT) == S_IFDIR) return 2; else if( !(s_buf.st_mode&S_IFREG ...

  6. C语言结构体中的函数指针

      这篇文章简单的叙述一下函数指针在结构体中的应用,为后面的一系列文章打下基础 本文地址:http://www.cnblogs.com/archimedes/p/function-pointer-in ...

  7. c语言结构体中的冒号的用法

    结构体中常见的冒号的用法是表示位域. 有些信息在存储时,并不需要占用一个完整的字节,   而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1   两种状态,   用一位二进位即可.为了节省 ...

  8. C++结构体中sizeof(1)

    sizeof sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节. 返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的 ...

  9. C结构体中位域

    C结构体中位域的一点小知识,最近在看资料时遇到结构体中的一种特殊操作——位域,在下面的程序中我将根据自己的理解进行简单介绍.程序只是为了了解位域的一些性质,运行时有些编译器可能会报错. 程序代码如下( ...

随机推荐

  1. 关于TCP/UDP缓存

    1.修订单个socket的缓冲区大小:通过setsockopt使用SO_RCVBUF来设置接收缓冲区,该参数在设置的时候不会与rmem_max进行对比校验,但是如果设置的大小超过rmem_max的话, ...

  2. 使用 XML 实现 REST 式的 SOA

    什么是 SOA? 如果公司有大量应用程序,这些程序供不同部门的承担不同责任的职员使用,那么就适合使用面向服务体系结构(Service Oriented Architecture,SOA).这些应用程序 ...

  3. Yii与表单交互的三种模式2

    在yii的标签中加入css或js方法:echo $form->textField($model,'starttime',array(        'onclick'=>'alert(&q ...

  4. C++重要知识点小结---2

    C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html 1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继 ...

  5. 让 PowerDesigner 支持 SQLite!

    让 PowerDesigner 支持 SQLite!   PowerDesigner是一个功能强大的数据库设计软件,最近正在用其设计新系统的数据库,但由于在项目初级阶段,希望使用轻量级的 SQLite ...

  6. webtest 文章

    一直也没有和游戏类测试打过交道,看到“腾讯WeTest ”提供的测试服务,以及和手机游戏相关的技术文章.在此作个备份记录的. 手游专题 http://wetest.qq.com/lab/tag/?ta ...

  7. 页面性能测试&提升方式

    性能测试包括:web系统页面测试.web系统后台测试 2种方式来提升你的web 应用程序的速度: ● 减少请求和响应的往返次数 ● 减少请求和响应的往返字节大小. 详细的看此文http://www.5 ...

  8. 开源堡垒机GateOne的安装、配置笔记

    因为内部临时需要这么一套系统,所以搜搜查查,搞定了系统部署,使用pam认证的配置. 系统初始化是使用CentOS 6.5 Mini x64版本.   首先exports http_proxy和http ...

  9. 【LeetCode】28 - Implement strStr()

    Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...

  10. PHP 关于回调的用法

    class aClass { public static function directWrite($message) { echo 'this is a static function from a ...