listboxのスムーズスクロールを無効に

解決


永井  2008-09-12 09:27:11  No: 145179

タイトル通りなのですが、
listboxコントロールのスムーズスクロールを無効にすることは可能なのでしょうか?
現在の環境ですと、エクスプローラやexcel等では1行づつホイールスクロールできるのですが、VBで作成したリストボックスではスムーズスクロールが有効になっているようです。
検索した結果、
http://www.microsoft.com/japan/winlogo/accessibility/WinXP_params4.mspx
http://tokovalue.web.infoseek.co.jp/ListBoxSmoothScroll_U.htm
http://d.hatena.ne.jp/gae/20040623/1087979931
この辺りの記述からできそうな感じもするのですが、いかんせん
知識が浅すぎて実装することができません。

どなたかヒントorサンプルコードをいただけないでしょうか?

作成環境はVB2008です。
以上よろしくお願いします。


とおり  2008-09-13 04:53:33  No: 145180

SystemParametersInfo+SPI_SETLISTBOXSMOOTHSCROLLING 
でいけるみたいです。(VS2003で確認)

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As Integer, ByVal fuWinIni As Integer) As Integer
Const SPI_SETLISTBOXSMOOTHSCROLLING As Integer = 4103
Const SPIF_SENDCHANGE As Integer = 2

Call SystemParametersInfo(SPI_SETLISTBOXSMOOTHSCROLLING, 0, 1, SPIF_SENDCHANGE)  ' スムース

Call SystemParametersInfo(SPI_SETLISTBOXSMOOTHSCROLLING, 0, 0, SPIF_SENDCHANGE)  ' 一ライン

SPIF_SENDCHANGEを指定しているので他のウィンドウまで影響受けます。
自分のウィンドウだけ変更する場合は0(かな?)を指定してください。(たぶん)


とおり  2008-09-13 07:07:05  No: 145181

って、一番上のリンク先しか見てなかった・・・
変換が出来なかったのね。


永井  2008-09-21 04:00:45  No: 145182

とおりさん
ありがとうございます。返事が遅くなってすいません。

>変換が出来なかったのね。

との事ですが、希望通りの動作を確認しましたので
解決とさせていただきます。
サンプルコードありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加