BOOL MyDlg::PreTranslateMessage( MSG* pMsg )
{
CEdit * pEdit = GetDlgItem(ID_MYEDIT);
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
{
pEdit ->SendMessage(...);
return FALSE
}
... } 在上述的程序中,可以从CEdit中派生一个CMyEdit,加入自己的消息处理程序,
然后用Subclass的方法替换pEdit的窗口过程
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
}
{
CEdit * pEdit = GetDlgItem(ID_MYEDIT);
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
{
pEdit ->SendMessage(...);
return FALSE
}
... } 在上述的程序中,可以从CEdit中派生一个CMyEdit,加入自己的消息处理程序,
然后用Subclass的方法替换pEdit的窗口过程
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
}
之后在这空函数里处理就可以了。
BOOL CSampleDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
{// 表示是ESCAPE键
OnExit(); // 这是具体退出处理的程序。
return TRUE; // 表示这消息已经处理过了
}
return FALSE; // 表示消息没有处理过了
}