DOBON.NET DOBON.NETプログラミング掲示板過去ログ

スクロールバーのイベント

環境/言語:[Visual Studio 2005 C#]
分類:[.NET]

2011/03/11(Fri) 07:31:48 編集(投稿者)
2011/03/11(Fri) 07:31:39 編集(投稿者)

こんにちは、C#にて、WndProcをオーバーライドして、スクロールバーの
”バーをつまんで動かす”イベントを受け取り、SendMessegeで別のコントロールとスクロールを同期させたいのですが、うまくいきません。

下記ソースでは以下の結果になりました。

マウスホイールでのスクロール:同期する。
スクロールバーの上下の▼▲でのスクロール:同期する。
スクロールバーをつまんで動かす。 : 同期しない。 ←上手くいきません。

        protected override void WndProc(ref Message m)
        {
            const int WM_HSCROLL = 0x114;
            const int WM_VSCROLL = 0x115;
            const int WM_MOUSEWHEEL = 0x20A;
            const int SB_THUMBTRACK = 0x5;
            const int SB_THUMBPOSITION = 0x4;

            switch (m.Msg)
            {
                case SB_THUMBTRACK:
                case SB_THUMBPOSITION:
                case WM_VSCROLL:
                case WM_HSCROLL:
                case WM_MOUSEWHEEL:
                //メッセージそのまま同期先へ                    break;
            }
            base.WndProc(ref m);
        }

何か受け取っていないメッセージがあるのでしょうか?
調べてみたのですが、見つかりません。
VScrollBar, HScrollBarとか使ってValueChangedで処理するのは
出来ないのでしょうか?
■No28305に返信(shuさんの記事)
> VScrollBar, HScrollBarとか使ってValueChangedで処理するのは
> 出来ないのでしょうか?

VScrollBar, HScrollBarがないコントロールの場合、どうすればいいのでしょう。
WndProcでWindowsメッセージは受け取って、全く同じメッセージを別のコントロ-ルに送っているのですが同期しません。

ちなみに来ているメッセージは”WM_VSCROLL”です。
使用しているコントロールはListViewになります。
■No28312に返信(kintonyさんの記事)

> VScrollBar, HScrollBarがないコントロールの場合、どうすればいいのでしょう。

VScrollBar, HScrollBar自体がコントロールです。同期させていコントロールとは別にスクロールバーのコントロールを配置してみてはどうでしょう?ということです。


> 使用しているコントロールはListViewになります。
ListViewだとスクロールバーを隠すと画面外のアイテムに移動出来ないので
駄目ですねmm


> WndProcでWindowsメッセージは受け取って、全く同じメッセージを別のコントロ-ルに送っているのですが同期しません。
>
> ちなみに来ているメッセージは”WM_VSCROLL”です。

http://www.winapi-database.com/Message/WM/WM_VSCROLL.html
によるとwParamの上位にポジションが入っているようですが、その所為で
switch条件に一致しないのでは?下位ワードからメッセージを判断しないと
いけないのかも。
> http://www.winapi-database.com/Message/WM/WM_VSCROLL.html
> によるとwParamの上位にポジションが入っているようですが、その所為で
> switch条件に一致しないのでは?下位ワードからメッセージを判断しないと
> いけないのかも。

switch条件には一致していまして、受け取ったメッセージをそのまま
別のコントロールに送っています。
もう少しがんばってみます。
ありがとうございます。

DOBON.NET | プログラミング道 | プログラミング掲示板