MFC 接收键盘输入指令

    程序接收键盘输入并作出相应的反馈是一个非常常见的功能,在MFC中提供了WM_KEYDOWN,WM_KEYUP这些消息来反便我们进行编程,但是这是在窗体没有其他控件的情况下才适用的。当有其他控件时,其他控件(其实也是窗体)肯定会有一个获得焦点使得这些消息失效,我们可以通过重载对话框程序的PreTranslateMessage(MSG* pMsg)虚函数来实现这一功能。

    首先在对话框类中先声明下:

BOOL PreTranslateMessage(MSG* pMsg);
    然后就可以直接对键盘消息进行处理了,示例如下:

BOOL Dlg::PreTranslateMessage(MSG* pMsg)//Dlg为对话框类
{
	if (pMsg->message == WM_KEYDOWN)
	{
		switch (pMsg->wParam)
		{
		case VK_UP:
			printf("UP\n"); break;
		case VK_DOWN:
			printf("DOWN\n"); break;
		case VK_LEFT:
			printf("LEFT\n"); break;
		case VK_RIGHT:
			printf("RIGHT\n"); break;
		default:
			break;
		}
	}
	return CDialog::PreTranslateMessage(pMsg);
}
    由上述的代码也可以发现,我们不仅仅可以响应键盘消息,只要愿意,可以自己在这里定义一个消息循环来处理想做的事。




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值