VC MFC 屏蔽ESC和ENTER键关闭对话框
方法一:
窗体头文件中加入:
1 protected:
2 virtual BOOL PreTranslateMessage(MSG* pMsg); // PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的
3 public:
4 virtual void OnOK();
在CPP中加入:
1 BOOL CColorDlgDlg::PreTranslateMessage(MSG* pMsg)
2 {
3 //屏蔽ESC关闭窗体/
4 if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE ) return TRUE;
5 //屏蔽回车关闭窗体,但会导致回车在窗体上失效.
6 //if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN && pMsg->wParam) return TRUE;
7 else
8 return CDialog::PreTranslateMessage(pMsg);
9 }
10 void CColorDlgDlg::OnOK()
11 {
12 //CDialogEx::OnOK();
13 }
方法二:
窗体头文件中加入:
public:
virtual void OnOK();
virtual void OnCancel();
afx_msg void OnClose(); //响应关闭事件!
在CPP中加入:
void CFirstFZDlg::OnOK()
{
return;
}
void CFirstFZDlg::OnCancel()
{
return;
}
void CFirstFZDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialogEx::OnCancel();
//CDialogEx::OnClose();
}
MSG 结构体定义如下:typedef struct tagMSG { // msg HWND hwnd; // 窗口句柄 UINT message; // 消息 WPARAM wParam; // 消息附加信息,根据消息而定 LPARAM lParam; // 消息附加信息,根据消息而定 DWORD time; // 消息发送时间 POINT pt; // 消息发送时指针的位置(屏幕坐标)} MSG;
