1

CScrollBar を使用して、ダイアログ内の項目のリストをナビゲートしようとしています。ダイアログで OnVScroll メッセージをキャッチしています。スクロール バーは、バーの上部と下部にある矢印をクリックしたり、バーの範囲をクリックしてページ全体を進めたりすると正しく応答します。問題は、親指をドラッグしようとしても、マウス ボタンを離すまでまったく反応せず、親指が正しい位置に移動することです。

spy++ を使用して WM_VSCROLL メッセージを探しましたが、親指をクリックして離したときにのみ SB_THUMBTRACK モードで送信されているようですが、ドラッグ中は送信されていないようです。ただし、CScrollBar の msdn ページには、サムがドラッグされている間、これらのメッセージを継続的に送信する必要があると記載されています。私はそれらのメッセージを受け取っていないので、親指がどこにあるのかわからず、現在の位置を設定できません。

メッセージが他の場所で傍受されているとは思いません.1つ目は、すべてのメッセージをログに記録するように設定した場合でもspy ++がそれらを認識しなかったため、2つ目は、クリックして離したときにバーが2つのサムトラックメッセージを取得するためです。

ダイアログに WS_VSCROLL スタイルを指定するか、CScrollBar を作成してダイアログに配置するかに関係なく、この問題が発生します。

足りないものはありますか?

4

1 に答える 1

2

SB_THUMBTRACK と SB_THUMBPOSITION を混同しないように注意してください。前者はライブ スクロールに必要なものであり、後者はユーザーがスライダーを離したときにのみ送信されます。

また、パフォーマンス設定を確認することもできます ([コントロール パネル] -> [システムの詳細設定を表示] -> [詳細設定] タブ -> [パフォーマンス] -> [設定...] -> [視覚効果]。リアルタイム効果の一部が無効になっている可能性があります (スムーズ スクロールなど)。リスト ボックス、または使用している Windows のバージョンに応じてその他)。

于 2012-04-17T18:14:55.107 に答える