一、屏蔽对话框的ESC和Enter的响应
新建的对话框弹出后,按ESC和Enter键,对话框就会退出(或隐藏)。有的时候我们需要屏蔽这样的动作,需要在自己写的对话框类中添加这样的代码:
以CUpdateParametersDialog
类为例,在.h文件中加入
BOOL PreTranslateMessage(MSG *pMsg);//至于是public、还是protected好像是都可以
在.cpp文件中加入
BOOL CUpdateParametersDialog::PreTranslateMessage(MSG *pMsg)
{
//屏蔽ESC
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE) {
return TRUE;
}
//屏蔽回车
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) {
return TRUE;
}
return CDialogEx::PreTranslateMessage(pMsg);
}
二、使控件可用/不可用
MFC针对控件提供统一的函数,比如说控件的ID是IDC_DATABASE
GetDlgItem(IDC_DATABASE)->EnableWindow(FALSE);//使控件不可获焦
GetDlgItem(IDC_DATABASE)->EnableWindow(TRUE);//使控件可以获焦