Перехват клавиш 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
|