我正在开发 DX11 游戏,我想在全屏模式下将光标剪辑到全屏窗口。我用这个方法
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?