ビットマップをスクロールさせたいのですが、その際に設定
が必要になる構造体「SCROLLINFO」について、
そのメンバ変数 nPageとnMax(nMin)、
それぞれの値が意味するところを教えてください。
例えば、Y方向高さが400ドットのビットマップがあったして、
それを300ドットの高さのクライアントエリアに表示するとします。
ウインドウに垂直スクロールバーをつけてスクロールさせたいと
すると、、
「nMax」についてはある説明で、
"nMin, nMaxは最小、最大スクロール位置を指定します。"
とありました。ただこの「最大スクロール位置」というのが
具体的にどの位置(長さ)を意味しているのか分からず、
とりあえず下のように見当を付けて見たのですが、
コード: 全て選択
_____________
(| |)
( | | ) 表示する
ビットマップ( | | ) クライアント
全体の高さ ( | | ) エリアの高さ
(400)( | | ) (300)
( | |)
( -------------
( | |) スクロールで動く
(| |) (見えてくる)
------------- 範囲の大きさ(100)
上の図の「スクロールで動く範囲 」の最大値、つまり
「100」をnMaxに設定してみました。
同様に、「nPage」は、
"nPageはページサイズを指定します。この値がページアップ・ページダウン
のスクロール量となります。" と書かれているのを読みました。
これもとりあえず「表示するクライアントエリアの高さ」で「300」と
設定してみました。
ただし実行結果は、、、
スクロールバーのつまみ(サム)の大きさは、
"ビットマップ全体の高さに対する
表示するクライアントエリアの高さ"に比例した大きさ、
この場合スクロール可動域の3/4を占める大きさで
表示されるのが本当だと思いますが、そうはならず
スクロールバー自体、表示されません。
あれこれ考えて適当に設定しているとき、
「nMax」に「ビットマップ全体の高さ」(400)を、
「nPage」に「表示するクライアントエリアの高さ」(300)を
それぞれセットして実行してみると、
パッと見た感じではスクロールバーのつまみ(サム)の大きさは
それ相応になっているようにも見えました。
(もしそうだとするとつまみの大きさは「nPage/nMax」で
計算されるのでしょうか?)
が、ただハッキリとそれがそうだとは分かりません。
「最小、最大スクロール位置」
「ページアップ・ページダウンのスクロール量」
「つまみの大きさの算出法」
それぞれは具体的にどのような大きさを、値を指す
ものなのでしょうか。