2010-12-21 3 views
3

API를 사용하여 MFC가 아닌 일반 Windows GUI 응용 프로그램을 사용하고 응용 프로그램에서 마우스를 움직이거나 마우스를 움직이면 스타일이 변경됩니다 (예 : 테두리, 크기가 변경된 화살표 등으로 바뀝니다.)하지만 때로는 스타일에 "집착"하여 마우스를 움직일 수 있고 크기 조정 화살표 또는 무엇이든, 심지어 창 테두리를 벗어난 후에도 그대로 유지됩니다. 다른 컨트롤 위로 이동하면 자체적으로 수정됩니다.커서 스타일이 업데이트 된 상태로 유지되지 않습니다.

불편을 드려도 전문가가 아니므로 고치고 싶습니다. 항상 최신 상태로 유지하려면 어떻게해야합니까?

답변

7

창 클래스를 등록 할 때 유효한 커서 핸들을 설정하십시오. WNDCLASSEX::hCursor을 참조하십시오. 올바른 커서를로드하려면 LoadCursor을 사용하십시오. 마찬가지로

WNDCLASSEX wc = {0}; 
... 
wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
... 
RegisterClassEx(&wc); 
+0

빠른 속도. 감사합니다. –

4

tenfour 's answer is correct. 여기에 조금 더 배경이 있습니다.

마우스가 창 내에서 움직이고 캡처되지 않으면 창에 메시지가 표시됩니다. 메시지 이름은 약간 혼란 스러울 수 있습니다. 이것은 기본적으로 커서를 설정하는 창이 아니라 커서를 설정하는 창입니다.

윈도우는 SetCursor을 호출하고 돌아와서이 메시지를 처리 ​​할 수 ​​있습니다.

또한 메시지를 DefWindowProc에 전달하여 기본 동작을 얻을 수도 있습니다. 기본 동작은 창에 대해 WNDCLASShCursor 필드를 확인하는 것입니다. 이것이 tenfour의 대답이 작동하는 이유입니다.

합니다 (DefWindowProc 첫 번째는 부모 윈도우 개입 할 수있는 기회를 제공하기 때문에 그것은, 실제로는 그것보다 조금 더 복잡합니다.)

당신이 어떤 상태 변수에 따라 커서를 선택처럼, 동적 뭔가를하려는 경우

, 어떤 적절한 커서로 SetCursor을 호출하고 TRUE을 반환하도록 WM_SETCURSOR을 처리해야합니다.

자세한 내용은 SetCursor을 참조하십시오.

+0

+1 계몽 정보. –

관련 문제