Мне удалось заставить курсор измениться на IBeam в тривиальной игре XNA с обновлением как:
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your update logic here
if (Keyboard.GetState().IsKeyDown(Keys.A))
{
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Arrow;
}
if (Keyboard.GetState().IsKeyDown(Keys.I))
{
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.IBeam;
}
base.Update(gameTime);
}
Мышь меняется на курсор IBeam при нажатии «I», но сразу же меняется обратно на стрелку, когда вы перемещаете мышь. Есть ли способ заставить его оставаться в качестве Windows IBeam по умолчанию, или мне нужно будет создать и отслеживать собственный курсор?
[EDIT] Я также должен отметить, что установка курсора в каждом отдельном кадре заставляет его мерцать при перемещении мыши. Кажется, XNA (или Windows) внутренне сбрасывает курсор на стрелку каждый кадр?