【发布时间】:2014-03-08 15:47:02
【问题描述】:
在处理 WM_SETCURSOR windows 消息时,我调用 SetCursor 到某个光标。如果我将光标设置为与它不同的东西,它会等到鼠标通过移动或单击获得输入以实际设置它。
有没有办法解决这个问题,让光标在输入之前不会在视觉上看起来有问题?
case WM_SETCURSOR:
{
SetCursor( game->GetCursor() ); // Returns m_curCurrent
return true;
}
break;
当我想要改变光标类型时,我也会设置它。
游戏初始化过程中:
m_curDefault = LoadCursor( m_hInstance, MAKEINTRESOURCE( IDC_DEFAULT_CURSOR ));
m_curAttack = LoadCursor( m_hInstance, MAKEINTRESOURCE( IDC_ATTACK_CURSOR ));
m_curMove = LoadCursor( m_hInstance, MAKEINTRESOURCE( IDC_MOVE_CURSOR ));
m_curCurrent = m_curDefault;
设置光标类型时
void Game::SetCursorType( CursorTypes curType )
{
switch ( curType )
{
case CGame::DefaultCursor:
m_curCurrent = m_curDefault;
break;
case CGame::AttackCursor:
m_curCurrent = m_curAttack;
break;
case CGame::MoveCursor:
m_curCurrent = m_curMove;
break;
default:
break;
}
}
【问题讨论】:
-
也许this question 有帮助。
-
当您移动鼠标时,Windows 会自动生成 WM_SETCURSOR 消息。毕竟,鼠标位于其他地方,因此可能必须更新光标。因此,如果您“更改光标”,那么您可能希望自己发送 WM_SETCURSOR 而不是等待 Windows 为您完成。
标签: c++ winapi mouse-cursor windows-messages