hur.cn - 华软网

 热门搜索

谁钻研过《windows程序设计》第五版

  作者:未知    来源:网络    更新时间:2011/10/6
SCROLLINFO结构体的 nPage 成员,我一直没理解这个页大小是什么东西,我以为是客户区的像素高度,但用高度来赋值,运行结果不对劲。
然后看了《windows程序设计》103页的代码,看他赋的内容是“客户区能显示的行数或列数”
“行数”和“页面大小”是一回事?
“列数”和“页面大小”是一回事?
---华软 网友回答---
SCROLLINFO 这个结构的成员之间可以有,亦可以没有必然联系。它通过fMask指定使用哪个成员。

滚动条有数种数据表示,Page形式,Pos形式,TrackPos形式,Range形式……
其中表示一个滚动条,必要的几项数据是,首先,滚动条的范围,最小,最大。例如0~100,更容易按百分比的形式理解,不过通常是一个0到N的整数;其次是滚动条的当前位置,以整数表示。

对于整个客户端区域,在整个滚动范围内,可以分为N页,nPage就是表示页号。
pos表示具体的位置,TrackPos表示移动滚动条过程中的当前位置。
---华软网友回复---
“行数”和“页面大小”是一回事?
“列数”和“页面大小”是一回事?

行数,表示的是一个经过计算的结果,它描述了客户端区域的总体高度和一组需要显示的内容的平均高度的比值(客户端区域高度 / 内容平均高度),若是文本,通常高度一致。
列数,表示的是一个经过计算的结果,它描述了客户端区域的总体宽度和一组需要显示的内容的平均宽度的比值(客户端区域宽度 / 内容平均宽度)。

通过计算,能知道需要显示的内容的高度、宽度,在整个客户端区域需要被分为多少页,以下以自动换行的文本为例简单讲述:

如:客户端区域宽W,高H,文本均高TH,均宽TW,文本字符共TTC(Total Text Count)
则:
每行能显示的文本为 :CPR = (int)(W/TW)列(Column per row)
总的行数为: TRC = (int)(TTC/CPR)行(Total row count)
每页显示的行数为:RPP = (int)(H/TH)行(Row per page)
显示的总页数为:TPC = (int)(H/RPP) + 1页(Total page count)

对于非自动换行的文本显示在这里不细说了,理论和这个差不多

---华软网友回复---
引用 1 楼 tearywang 的回复:
对于整个客户端区域,在整个滚动范围内

你说的客户端区域,是说窗口的客户区?
你说的整个滚动范围是什么意思?像素?高度?宽度?还是什么
---华软网友回复---
引用 3 楼 xiaoyuanyuan2009 的回复:
引用 1 楼 tearywang 的回复:
对于整个客户端区域,在整个滚动范围内

你说的客户端区域,是说窗口的客户区?
你说的整个滚动范围是什么意思?像素?高度?宽度?还是什么

是的,物理设置就是像素。
---华软网友回复---
引用 4 楼 tearywang 的回复:
引用 3 楼 xiaoyuanyuan2009 的回复:
引用 1 楼 tearywang 的回复:
对于整个客户端区域,在整个滚动范围内

你说的客户端区域,是说窗口的客户区?
你说的整个滚动范围是什么意思?像素?高度?宽度?还是什么

是的,物理设置就是像素。


打错字了,物理设备就是像素。
---华软网友回复---
引用 2 楼 tearywang 的回复:
显示的总页数为:TPC = (int)(H/RPP) + 1页(Total page count)

这是在用像素数除以行数? 不是一个逻辑啊!!
---华软网友回复---
引用 6 楼 xiaoyuanyuan2009 的回复:
引用 2 楼 tearywang 的回复:
显示的总页数为:TPC = (int)(H/RPP) + 1页(Total page count)

这是在用像素数除以行数? 不是一个逻辑啊!!


无论是怎么乘或怎么除,只要单位一致即可。
文字高度,也是像数,客户端N像素,整个客户端一次能显示M行,总共T行……      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。