Перехват клавиш Esc и Enter во время редактированияМетод основывается на перегрузке виртуальной функции PreTranslateMessage(). Прием дает возможность обрабатывать некоторые важные сообщения и комбинации клавиш. Он позволяет осуществлять копирование, резку, вставку, используя стандартные клавиши и не пропуская некоторые сообщения непосредственно к элементу управления.
BOOL CTreeCtrlX::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == WM_KEYDOWN )
{
// Если находимся в режиме редактирования, надо быть увереным,
// что окно редактирования получает дейтсвительно важные клавиши
if( GetEditControl()&& (pMsg->wParam == VK_RETURN
|| pMsg->wParam == VK_DELETE
|| pMsg->wParam == VK_ESCAPE
|| GetKeyState( VK_CONTROL)
) )
{
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
return TRUE;
}
}
return CTreeCtrl::PreTranslateMessage(pMsg);
}
Источник: ProtoSphere
|