タイトル通りなのですが、
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です。
以上よろしくお願いします。
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(かな?)を指定してください。(たぶん)
って、一番上のリンク先しか見てなかった・・・
変換が出来なかったのね。
とおりさん
ありがとうございます。返事が遅くなってすいません。
>変換が出来なかったのね。
との事ですが、希望通りの動作を確認しましたので
解決とさせていただきます。
サンプルコードありがとうございました。
ツイート | ![]() |