저는 DX11 게임을하고 있으며 전체 화면 모드에서 전체 화면 모드로 커서를 이동하려고합니다. 이 방법을 사용합니다.ClipCursor가 작동하지 않습니다.
void MyClass::_SetupCursor(BOOL bFullscreen) {
// Clip cursor if requested
if(bFullscreen) {
if(m_bShowCursorWhenFullscreen) {
ShowCursor(m_bShowCursorWhenFullscreen);
}
if(m_bClipCursorWhenFullscreen) {
// Confine cursor to full screen window
RECT windowRect;
GetWindowRect(m_hWnd, &windowRect);
ClipCursor(&windowRect);
}
}
else {
ShowCursor(TRUE);
ClipCursor(NULL);
}
}
그러나 전체 모니터 모드에서 2 대의 모니터를 사용할 경우 다른 모니터로 마우스를 이동할 수 있습니다. 해상도를 전체 화면 모드에서 2048x1152로 설정하면 창 사각형이 1360x768로 표시되고 잘라내 기는됩니다. GetClippedRect를 사용하여 클리핑 된 것을 확인합니다.
이1) 당사 마우스 내 창에있는 모니터에 클립 점점되지 않습니다
그래서 나는이 개 질문이?
2) 모니터가 2048x1152이고 2048x1152로 설정되어 있다는 사실을 알고있는 경우 왜 창 사각형이 1360x768로 측정됩니까?
커서를 숨기는 대신 왜 자르려고합니까? –
@CodyGray 클리핑되지 않으면 커서를 숨길 필요가 없습니다 ... 커서가 전체 화면 창에 있어야합니다. 많은 게임이이 기능을 가지고 있습니다. 그렇습니다. 나는 윈도우 커서를 숨기고 있지만 실제로 커서를 다른 것으로 바꾸지 않습니다. 커서를 아직 바꾸지 않았습니다. – Darkhydro
이 함수 호출을 완전히 피하십시오. 커서를 직접 에뮬레이션해야합니다. 그 이유는 응용 프로그램이 불분명하게 종료되는 경우 (segfault/exception/access violation/whatever) Windows가 클립 범위를 유지할 것이기 때문입니다 (적어도 <= Windows XP가 수행 한 것). 만약 당신이 절대적으로 원하는 시스템 커서를 경계 검사를 포함하고'SetCursorPosition'를 대신 사용하십시오. –