この質問では、マウスホイールの傾きを検出する方法が投稿され、必要なコードを示す回答が受け入れられます。
そのコードをアプリケーションの既存のWndProc
メソッド (トラップする必要がある他のメッセージに対して機能している) に実装しましたが、機能していません。私がチェックしたところ、マウスホイールを傾けたときWndProc
の値を持つメッセージは言うまでもなく、メッセージをまったく受け取っていないようです。0x020E
.NET 3.5 SP1 がインストールされた Windows XP SP3 (完全にパッチが適用された) で Microsoft Wireless Laser 5000 を使用しています。
Intellipoint ドライバーを 2009 年 8 月 5 日付のバージョン 7.0.258.0 に更新しました。
他のアプリケーション (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
受信中です。メッセージは次のように定義されます。
private const int WM_EXITSIZEMOVE = 0x0232;
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xF020;
private const int WM_MOUSEHWHEEL = 0x020E;
注 [ハードウェア] タグを削除しました。他のアプリケーションがメッセージを受信しているため、ハードウェアに問題があるわけではないと 99% 確信しているためです。
アップデート
スクロールバーを備えた複数行のテキスト ボックスをアプリケーションに追加し、マウス ホイールの傾きメッセージを受信して処理します。だから私がする必要があるのは、そのためのコードを見つけることだけです;)
アップデート
SuperUser に関するこの質問は、これに関係している可能性があります。そこでの回答に注目します。