Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Через 3 дня :

День славянской письменности и культуры


Компонент на WinAPI


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Пол:Муж Evgeny
Постоянный участник


Возраст: 51
Знак зодиака: Козерог
Зарегистрирован: 26.06.2005
Сообщения: 152
Откуда: Омск
СообщениеЧт, 01-Дек-2005 0:28    Заголовок сообщения: Компонент на WinAPI
Цитата

Почему в компоненте в его оконной процедуре не обрабатываются курсорные клавиши? Они почему-то даже не ловятся. VK_PRIOR, VK_NEXT и так далее пожалуйста, а вот VK_LEFT и подобные не хотят.
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Пол:Муж dogma
aka Достоевский


Возраст: 27
Знак зодиака: Телец
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
СообщениеЧт, 01-Дек-2005 3:26 
Цитата

какой еще компонент? Полный расклад давай.
_________________
Bonum initium est dimidium facti
SQL-задачи (on-line)
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеЧт, 01-Дек-2005 19:14 
Цитата

храни/обрабатывай так:
Код:

var
  Keys:array[0..255] of Boolean;

...wndproc...
WM_KEYDOWN:
  Keys[wParam]=TRUE;
.....



_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Evgeny
Постоянный участник


Возраст: 51
Знак зодиака: Козерог
Зарегистрирован: 26.06.2005
Сообщения: 152
Откуда: Омск
СообщениеЧт, 08-Дек-2005 20:37 
Цитата

Все просто, написан компонент на API. В его оконной процедуре обрабатывается сообщение WM_KEYDOWN. Если такой компонент используется в главном окне программы, то тут без проблем все работает, но если из главного окна вызвать какой-либо свой диалог с этим же компонентом, вот тут и начинаются чудеса. Как удалось выяснить, в дочерних диалогах сообщение WM_KEYDOWN работает не полностью, не все клавиши обрабатываются. Но вот причину такого поведения установить не удалось. Не помог ни Win32.hlp, ни MSDN.
_________________
Здесь Вы там не найдете
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Пол:Муж Шурик
Я живу тут....


Возраст: 42
Знак зодиака: Овен
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
СообщениеПт, 09-Дек-2005 1:43 
Цитата

Не знаю, по теме ли. Но может это что-то подскажет.
Как-то мне нужно было ловить нажатия стрелочек на форме. Но они не доходили до обработчиков. После долгиг разбирательств оказалось, что делфийская форма обрабатывает сообщения стрелок и табуляции чтобы использовать их для навигации по контролам. Это выполняет обработчик сообщения CM_DialogKey. Я лечил это так:
delphi:
  1. TMainForm = Class( TForm )
  2.   ...
  3.   procedure CMDialogKey( var Message: TCMDialogKey ); Message CM_DialogKey;
  4.   ...
  5.  
  6. procedure TMainForm.CMDialogKey(var Message: TCMDialogKey);
  7. const Arrows = [ VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN ];
  8. begin
  9.   if not ( Message.CharCode in Arrows ) then Inherited;
  10. end;

_________________
Ответ готов, готов ли твой вопрос?
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Пол:Муж Evgeny
Постоянный участник


Возраст: 51
Знак зодиака: Козерог
Зарегистрирован: 26.06.2005
Сообщения: 152
Откуда: Омск
СообщениеПт, 09-Дек-2005 19:29 
Цитата

У меня программа полностью на API, и боюсь этот способ не поможет. Когда я ловил сообщения с помощью WinSight32 (из поставки Delphi), то при нажатии курсорных клавиш все сообщения идут. Только в диалоговое окно они не попадают, пропадают неизвестно где. Возможно глюк Гейтса.
_________________
Здесь Вы там не найдете
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100