dinput.cs

来自「Beginning C# Game Programming 的源代码」· CS 代码 · 共 56 行

CS
56
字号
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using Microsoft.DirectX;
using Microsoft.DirectX.DirectInput;


namespace SpaceWar {


	/// <summary>
	/// This is where we initialize DirectInput.  The actual key testing is being done in the GameClass HandleKeys() funtion,
	/// after getting the current keyboard state from this class.
	/// </summary>
	/// 
	public class InputClass {
		private Control owner = null;
		private Device localDevice = null;

		public InputClass(Control owner) {
			this.owner = owner;

			localDevice = new Device(SystemGuid.Keyboard);
			localDevice.SetDataFormat(DeviceDataFormat.Keyboard);
			localDevice.SetCooperativeLevel(owner, CooperativeLevelFlags.Foreground | CooperativeLevelFlags.NonExclusive);         
		}

		public KeyboardState GetKBState() {
			KeyboardState state = null;
			try {
				state = localDevice.GetCurrentKeyboardState();
			}
			catch(InputException) {
				do {
					Application.DoEvents();
					try{ localDevice.Acquire(); }
					catch (InputLostException) { 
						Thread.Sleep(2);
						continue;
					}
					catch(OtherApplicationHasPriorityException) { 
						Thread.Sleep(2);
						continue;
					}

					break;

				}while( true );
			}
			return state;
		}
    
		
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?