DX11(九):处理键盘鼠标输入

06/11/2020

WIN32 API 输入与输出

因为windows WIN32 API的消息回调会处理键盘鼠标的事件,所以可以直接使用。

LRESULT CALLBACK MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
   
	switch (msg)
	{
   
	// 监测这些键盘/鼠标事件
	case WM_INPUT:

	case WM_LBUTTONDOWN:
	case WM_MBUTTONDOWN:
	case WM_RBUTTONDOWN:
	case WM_XBUTTONDOWN:

	case WM_LBUTTONUP:
	case WM_MBUTTONUP:
	case WM_RBUTTONUP:
	case WM_XBUTTONUP:

	case WM_MOUSEWHEEL:
	case WM_MOUSEHOVER:
	case WM_MOUSEMOVE:	//鼠标移动事件 
		int x = LOWORD(lParam);//鼠标的横坐标
	    int y = HIWORD(lParam);//鼠标的纵坐标
		return 0;

	case WM_KEYDOWN:
	case WM_SYSKEYDOWN:
	case WM_KEYUP:
	case WM_SYSKEYUP:  //系统键位
		return 0;
	}
	return DefWindowProc(hwnd, msg, wParam, lParam); //交给操作系统自己处理
}

DirectXTK

微软进一步针对DirectX重写了Keyboard和Mouse类,但依然是通过原先的消息回调函数传递事件

void Keyboard::ProcessMessage(UINT message, WPARAM wParam, LPARAM lParam)
{
   
	auto pImpl = Impl::s_keyboard; //Keyboard类中的私有Impl类,用来管理键盘状态识别

	if (!pImpl)
		return;

	bool down = false;

	switch (message)
	{
   
	case WM_ACTIVATEAPP:
		pImpl->Reset()
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值