MFC用代码实现屏蔽ESC和Enter键按下,对话框窗体关闭或者消失的问题

新建的MFC对话框项目,去掉默认对话框中的确定和取消按钮,但是编译启动窗体之后,按下enter键,窗体还是会关闭

为了解决这个问题,可以在代码中添加代码,屏蔽enter键按下的效果响应。由于MFC对话框之间状态由PreTranslateMessage这个函数接口进行消息的传递,于是解决这个问题,可以考虑从PreTranslateMessage入手。按下enter键和esc键,窗体默认执行到OnOk和OnCancel接口。


解决方案:

在窗体对应的.h文件中添加如下代码,

protected:

virtual BOOL PreTranslateMessage(MSG* pMsg);

public:

virtual void OnOk();

virtual void OnCancel();

在窗体对应的.h文件中添加如下代码,

BOOL ExampleDlg::PreTranslateMessage(MSG* pMsg)
{
	//屏蔽ESC键按下
	if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
	{
		return TRUE;
	}

	//屏蔽Enter键按下
	if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN && pMsg->wParam)
	{
		return TRUE;
	}

	//操作其他msg
	return CDialog::PreTranslateMessage(pMsg);	
}

void ExampleDlg::OnOk()
{
	return;
}

void ExampleDlg::OnCancel()
{
	return;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值