この質問How to detect mouse wheel tiltには、必要なコードを示す回答が掲載され、受け入れられています。私のアプリがマウスホイールの傾きメッセージを受け取っていないのはなぜですか?
私のアプリケーションの既存のWndProc
メソッド(これはトラップする必要がある他のメッセージに有効)では実装されていますが、機能しません。私はチェックして、WndProc
は、マウスホイールを傾けたときにメッセージが全く出てこないように見えて、0x020E
の値を持っています。
.NET 3.5 SP1がインストールされたWindows XP SP3(完全にパッチ適用済み)でMicrosoft Wireless Laser 5000を使用しています。
Intellipointドライバをバージョン7.0.258.0(08/05/2008)に更新しました。
他のアプリケーション(Visual Studio、Word、paint.NETなど)がマウスホイールを傾けて動作しているため、アプリケーションにする必要がありますが、間違っていることはわかりません。ただ、完全性について
はここに私のコードです:
protected override void WndProc(ref Message m)
{
Trace.WriteLine(string.Format("0x{0:X4}", m.Msg));
switch(m.Msg)
{
case WM_EXITSIZEMOVE:
Opacity = 1.0;
break;
case WM_SYSCOMMAND:
int command = m.WParam.ToInt32() & 0xfff0;
if (command == SC_MINIMIZE && this.minimizeToTray)
{
MinimizeToTray();
}
break;
case WM_MOUSEHWHEEL:
// Handle tilting here
break;
}
base.WndProc(ref m);
}
Trace.WriteLine
コールは、チルトメッセージが通過しているかどうかを確認しようとする試みです。他のメッセージWM_EXITSIZEMOVE
およびWM_SYSCOMMAND
が受信されています。私はそれが他のアプリケーションがメッセージを受信しているとして、故障していたハードウェアではありません99%確信しているように私には、[ハードウェア]タグを削除
private const int WM_EXITSIZEMOVE = 0x0232;
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xF020;
private const int WM_MOUSEHWHEEL = 0x020E;
注:メッセージは以下のように定義されています。
UPDATE
私は自分のアプリケーションにスクロールバーを複数行のテキストボックスを追加しましたし、それが受信して、マウスホイールのチルトメッセージに作用します。だから私がする必要があるすべては、そのためのコードを見つけることです。)スーパーユーザの
UPDATE
This questionこの上でいくつかのベアリングを有することができる - 私はそこの答えに目をしておこう。
フォームにWndProcを使用していますか? –
@ダニエル - はい、私は質問でそれを明確にしていたはずです。 – ChrisF
@skaffman - ハードウェアタグについてはわかりません。私はマウスが正しく機能していることを99%確信しています - 傾きを扱う他のアプリケーションについての私の注意を見てください。 – ChrisF