이 질문에 How to detect mouse wheel tilt 대답이 게시되고 필요한 코드를 보여줍니다.내 앱이 마우스 휠 틸트 메시지를받지 못하는 이유는 무엇입니까?
내 응용 프로그램의 기존 WndProc
메서드 (이 코드는 트랩해야하는 다른 메시지에서 작동 함)에서 구현했지만 작동하지 않습니다. 나는 체크했다. WndProc
은 마우스 휠을 기울일 때 0x020E
의 값을 가진 메시지를 전혀 보지 못했던 것으로 보인다.
.NET 3.5 SP1이 설치된 Windows XP SP3 (완전 패치)에서 Microsoft Wireless Laser 5000을 사용하고 있습니다.
내 Intellipoint 드라이버를 2009 년 5 월 8 일자 버전 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
이 수신 중입니다. 나는 그것이 다른 응용 프로그램이 메시지를받는 것처럼 잘못의 하드웨어 아니다 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
내 응용 프로그램에 스크롤바에 여러 줄의 텍스트 상자를 추가 한 및 그 수신하고 마우스 휠 틸트 메시지에 작용. 그래서 할 필요는 대한 코드를 찾을 수있다; 슈퍼 유저에
This question이에 대한 몇 가지 베어링을 가질 수있다
UPDATE) - 내가 거기에 대답에 눈을하겠습니다.
양식에 WndProc을 사용하고 있습니까? –
@ 대니얼 - 예, 질문에 명확하게 설명 했어야합니다. – ChrisF
@skaffman - 하드웨어 태그가 확실하지 않습니다. 마우스가 올바르게 작동하는지 99 % 확신합니다. 기울기를 처리하는 다른 응용 프로그램에 대한 내 노트를 참조하십시오. – ChrisF