スクロール範囲 – プログラミング – Home

通知
すべてクリア

[解決済] スクロール範囲


yu-ya
 yu-ya
(@yu-ya)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

画面をスクロールさせたいときに、
移動範囲が65536を超えてしまう場合はどうしたらいいでしょうか?
いろいろと考えてみましたがいい案が出ません。
ご教授願います。

環境:VC++.NET
OS:WindowsXP

MFCでは利用していません。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

移動領域が大きくなればなるほどスクロール幅がアバウトになりますが、
スクロール上の1が画面全体のどのくらいに相当するかを換算して
処理していました。
この辺はスクロール幅が65536を超えなければ、1対1の対応にしておき、
超えたら1対2とかにして対応させれば何とかごまかせます。
まあ、微調整が必要なのでこの辺は組みながら調整するしかないですね。
いまだにWin16のときの仕様を引きずっているスクロールバーにも困り者ですが、
そういった方法をとるしかなさそうです。


返信引用
汎
 汎
(@汎)
ゲスト
結合: 22年前
投稿: 43
 

ディスプレイの高さは 768 とか、大きくても 1024,ちょっと特殊でも2048程度ですよね。
普通のスクロールバーは1画面の収まるスクロール量しか使わないので、
65536もあれば、十分すぎる量なわけです。

あとはいっしょで、換算して使えばよいということですね。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

MFC を使ってなくて WinXP の GDI に 16bit の制限があるということが良く判りません
スクロール範囲が 65535 を超えてどういう問題が出るのか示して下れませんか


返信引用
汎
 汎
(@汎)
ゲスト
結合: 22年前
投稿: 43
 

適当な回答だったので(すみません)、きちんと調べてみました。

換算をしたくない場合
プラットフォームSDKの GetScrollInfoで32ビットデータ値が取得できます。
GetScrollInfoの解説を見ましょう。


返信引用
yu-ya
 yu-ya
(@yu-ya)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

GetScrollInfo使って解決しました☆
皆さん、ありがとうございました。

>普通のスクロールバーは1画面の収まるスクロール量しか使わないので、
すごいバカでかいデータをGUI表示するツールを作っていて、
部分的に拡大とかして詳細を見たりしなくてはいけないので、
そーなるとデータの範囲が65536なんて軽く超えてしまうんです。
Wordでも小説とかだったらページ数を考えると、
縦スクロール量は1画面なんて相手にならないと思いますが…。

>16bit の制限があるということが良く判りません
現在位置をWPARAMの上位ビットから得ていたからです。

もし2^32=4294967296を超えるようなことがあれば(無いとは思いますが(笑
換算することにします。←これ、良い方法ですね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました