2012-05-14 9 views
0

私はWindowsプログラミングを学んでいますが、スクロールバーのスクロール範囲とページサイズについてはわかりません。 http://msdn.microsoft.com/en-us/library/bb787527.aspxに基づいなぜ(MaxRangeValue - PageSize)ではなく、スクロールバーの最大スクロール位置が(MaxRangeValue - (PageSize - 1))ですか?

MaxScrollPos = MaxRangeValue - (PageSize - 1) 

しかし、なぜ?私は600にそれが

MaxScrollPos = MaxRangeValue - PageSize 

は、私は、高さが2000pxでビットマップを表示したい場合は、クライアントの高さが600PXであれば、それは[0、2000]にスクロール範囲を設定するのが自然だ方が良いと思うし、ページサイズ。スクロール位置が0の場合、ビットマップの先頭が表示されます。スクロール位置が1400の場合、ビットマップの最下部が表示されます。しかし私がそうするならば、私はスクロール位置を2000 - (600 - 1)= 1401に設定することができます.1400が底部を表示するべきならば、位置1401はどういう意味ですか? "MaxScrollPos"が "MaxRangeValue - PageSize"に等しい場合、すべてが完全に機能します。問題を回避するためにスクロール範囲を[0、1999]に設定する必要があります。私はそれが不自然だと思う。それで、これを説明できる人は誰ですか?

答えて

1

0〜1999の範囲は2000の値をカバーします。これはゼロベースのインデックスですが、ピクセルサイズのカウントは1から始まります。

+0

MSDNでは、「アプリケーションは、一度に16行しか表示できないウィンドウに260行のテキストファイルを表示する必要がある場合、スクロールバーの範囲は1〜244に設定できます。スクロールボックスが1の位置にある場合、最初の行はウィンドウの上部になります。スクロールボックスが244の位置にある場合、最後の行(260行目)はウィンドウの最下部に表示されます。「範囲は1〜260ですか? – EFanZh

+0

まさに! - 1から始まる0ではなく。 – noelicus

+0

MSDNは1から244で、1から260ではないと言います。また、1から260または0から259を使用する必要がありますか? – EFanZh

関連する問題