문제

나는 현재 Windows XP용 C++ 응용 프로그램과 같은 게임 내에서 마우스 커서를 변경하는 데 어려움을 겪고 있습니다.

사용 중인 커서를 변경하려면 SetCursor() 작동 중인 원하는 커서를 전달합니다.그러나 while 루프 동안 PeekMessage() 커서가 기본 화살표로 계속 재설정되는 것을 말합니다.

이것은 문제가 되는 루프입니다.

MSG  msg;
while( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
    TranslateMessage( &msg );
    DispatchMessage( &msg );
}

디버깅하는 동안 호출 중에 커서가 변경된 것을 발견했습니다. PeekMessage() 그 이후에는 msg.message == 0x200이며 메시지는 다음 중 하나가 되어야 합니다.

WM_MOUSEFIRST = 0x200
WM_MOUSEMOVE = 0x200

왜 이런 일이 발생하는지에 대한 정보를 찾을 수 없었고 Windows 메시지에 대한 경험도 없습니다.

감사해요.

편집하다:

에 따르면 여기 시스템은 마우스가 움직일 때마다 클래스 커서를 다시 그려서 효과적으로 기본 커서로 다시 설정합니다.이를 염두에 두고 창 메시지 콜백 함수에 다음을 추가했습니다.

case WM_SETCURSOR:
    return 0;

문제 해결됨.

도움이 되었습니까?

해결책

어떻게 디버깅하셨나요?SoftIce나 Windows 마우스 포인터를 공유하지 않는 다른 응용 프로그램을 사용하지 않는 한 응용 프로그램에서 디버거를 분리하기가 어렵습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top