CTabCtrl
Здравствуйте, comp.
Подскажите, каким образом в Tab-е можно заблокировать обработку на
нажатие клавиш курсора? Дело делается в Vicual C 6.0.
← Сентябрь 2005 → | ||||||
2
|
||||||
5
|
6
|
7
|
11
|
|||
14
|
||||||
24
|
||||||
28
|
За последние 60 дней ни разу не выходила
Сайт листа:
http://codeguru.ru
Открыт:
21-09-2003
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.prog.prog-list@subscribe.ru
Адрес
модератора: comp.soft.prog.prog-owner@subscribe.ru
Здравствуйте, comp.
Подскажите, каким образом в Tab-е можно заблокировать обработку на
нажатие клавиш курсора? Дело делается в Vicual C 6.0.
Здравствуйте !
EnableWindow блокирует весь пользовательский ввод (в том числе и от
мыши). К тому же в disabled-состоянии контролы обычно рисуются по
другому.
Имхо, правильнее блокировать прохождение WM_KEYDOWN, WM_KEYUP
с определенными кодами клавиш до оконной процедуры контрола.
Для MFC это можно сделать если в PreTranslateMessage.
Не вызывать PreTranslateMessage родительского класса, просто
возвратить FALSE (естесственно, только если сообщение
WM_KEYDOWN или WM_KEYUP и коды клавишь соответствующие).
Неправда, рисуется он также. Проверено! :) А какой нужен ввод отмыши?
Номер выпуска : 4908
Возраст листа : 728 (дней)
Количество подписчиков : 535
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/439326
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
Здравствуйте !
Не "он", а "они" я имел в виду контролы вообще.
Кнопки, Edit Control, Static Control, и.т.д. рисуются по другому.
Ничто не мешает мелкософту в следующих версиях винды в disabled state
на Tab-е хоть козью морду нарисовать :)
Изначально вопрос был "каким образом в Tab-е можно заблокировать обработку
на нажатие клавиш курсора?". То есть, имхо, автор топика хотел, чтобы
с помошью клавиатуры нельзя было между закладками переключаться.
Но при этом можно на нужную вкладку кликнуть и переключиться.
Здравствуйте !
Ну, например:
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->hwnd == m_wndTab.GetSafeHwnd())
{
if(((pMsg->message == WM_KEYDOWN) ||
(pMsg->message == WM_KEYUP))
&&
((pMsg->wParam == VK_LEFT) ||
(pMsg->wParam == VK_UP) ||
(pMsg->wParam == VK_RIGHT) ||
(pMsg->wParam == VK_DOWN)))
{
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Это для случая с диалогом. В диалоге есть таб. Для
этой таб-ы есть объект m_wndTab. Класс диалога CMyDlg.
В нем, соответственно, PreTranslateMessage.
Теперь с помощью клавы между заклатками переключаться
нельзя.
Помнится была такая функция EnableWindow(HWND,BOOL)
соответственно первый параметр - дескриптор окна, а второй - булево занчение,
говорящее что окно должно быть заблокировано (false), и, разблокирвано в противном
случае.
Хотя могу в чем то ошибиться :)
Номер выпуска : 4905
Возраст листа : 728 (дней)
Количество подписчиков : 535
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/439260
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru