PreTranslateMessage虚函数,用来截获消息

本文探讨了MFC中PreTranslateMessage函数与SDK中WndProc回调函数在消息处理上的区别和联系,详细介绍了如何在MFC中重载PreTranslateMessage以处理键盘和鼠标消息,并通过示例代码展示了如何实现特定热键的响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在MFC中,PreTranslateMessage是虚函数,是用来截获消息的。我们可以通过重载它来处理键盘和鼠标消息。在sdk中,这有所不同,我们必须在回调函数LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)中处理消息。

它和PreTranslateMessage起的作用是类似的,只是MFC封装的更好而已。

PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当你需要在MFC之前处理某些消息时,常常要在这里添加代码.。

添加PreTranslateMessage函数

头文件中添加

源文件中添加

通过代码实现热键

BOOL CtestDlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 在此添加专用代码和/或调用基类
	 
	if(pMsg->message==WM_KEYUP)//WM_KEYDOWN判断是否有按键按下
								//WM_KEYUP判断是否有按键弹起
	{
		switch(pMsg->wParam)
			{
			case VK_DOWN://表示是方向键中的向下的键
				AfxMessageBox(_T("下"));
				break;
			case VK_UP://表示是方向键中的向上的键
				AfxMessageBox(_T("上"));
				break;
			case VK_SHIFT://表示是SHIFT键
				AfxMessageBox(_T("SHIFT"));
				break;
			case VK_CONTROL://表示是CONTROL键
				AfxMessageBox(_T("CONTROL"));
				break;
			case VK_F2://表示是F2键
				AfxMessageBox(_T("F2"));
				break;
			default:
				break;
			}
	}    

	return CDialogEx::PreTranslateMessage(pMsg);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值