解决方法:重载系统函数BOOL PreTranslateMessage(MSG *pMsg);
在该函数中做出对回车键的响应
/**************************设置对按键的响应***********************************/
BOOL CMain::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
/*************对回车键的响应****************/
if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
{
if(pMsg->wParam==VK_RETURN) //这里是回车键的响应
{
UpdateData(TRUE);
HWND hWnd = ::GetFocus();
int iID = ::GetDlgCtrlID(hWnd);
if( iID == IDC_XFH )
{
/*
SendEditChatMsg(); //为要处理的数据函数
IDC_XFH = "";
*/
UpdateData(TRUE);
}
/*
if( iID == IDC_EDITACTION )
{
}*/
return TRUE;
}
/************************************************/
}
return CDialog::PreTranslateMessage(pMsg);
}
/**************************************************************************************/
第二种方法
屏蔽关闭
CMenu *pSystemMenu=GetSystemMenu(FALSE);
pSystemMenu->DeleteMenu(8,MF_BYPOSITION);
pSystemMenu->DeleteMenu(7,MF_BYPOSITION);
pSystemMenu->DeleteMenu(5,MF_BYPOSITION);
pSystemMenu->DeleteMenu(4,MF_BYPOSITION);
pSystemMenu->DeleteMenu(3,MF_BYPOSITION);
pSystemMenu->DeleteMenu(2,MF_BYPOSITION);//好象是它,你试一下.
第三种方法
禁用关闭按钮可以在OnInitDialog 中 加入下面代码:
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
pSysMenu->DeleteMenu(SC_CLOSE,MF_BYCOMMAND);
}
重载对话框的OnOK函数,可以屏蔽回车键
void CMyDlg::OnOK()
{
}
禁止用ESC
基于对话框的应用程序如何屏蔽按ESC键关闭窗口
在BOOL C***Dlg::PreTranslateMessage(MSG* pMsg)中
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_ESCAPE) //Esc键不退出程序
return TRUE;
}