Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: VK_TAB: приходит лишь сообщение об отпускании, клавиши ( Message.lParam < 0)  (Прочитано 5678 раз)
0 Пользователей и 1 Гость смотрят эту тему.
malor
Опытный

ru
Offline Offline

« : 12-08-2011 06:55 » 


Почему про нажатие клавиши не приходит сообщения? Т.е. с Message.lParam большим нуля.
Код: (Delphi)
procedure TForm1.Wndproc(var Message: TMessage);
var
    strLog: AnsiString;
begin
  case Message.Msg of
    WM_KEYDOWN, WM_SYSKEYDOWN, WM_SYSKEYUP, WM_KEYUP:
    begin
      strLog := 'wParam: ' + IntToStr(Message.wParam) + ' lParam: ' + IntToStr(Message.lParam);
    end;
  else
    inherited;
  end;
end;

Delphi XE

* TabProject.zip (84.35 Кб - загружено 537 раз.)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 12-08-2011 16:37 » 

Цитата
Message.lParam большим нуля.

этот параметр всегда больше нуля Улыбаюсь Он вообще беззнаковый. Делаем просмотр переменных в hex-формате и наслаждаемся таблицей
http://msdn.microsoft.com/en-us/library/ms646280(VS.85).aspx

Насчёт того, что нажатие не приходит - возможно, в окнах-предках сообщение отсеяно. Проследи Spy++
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 12-08-2011 20:00 » 

malor, а зачем тебе WndProc? Класс формы поддерживает методы-события OnKeyPress, OnKeyUp и OnKeyDown.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
malor
Опытный

ru
Offline Offline

« Ответ #3 : 13-08-2011 07:40 » 

Таким добавлением решил вопрос:
Код: (Delphi)
procedure TForm1.CMDialogKey(var AMessage: TCMDialogKey);
var   strLog: AnsiString;
begin
  if AMessage.CharCode = VK_TAB then begin
      strLog := 'wParam: ' + IntToStr(AMessage.CharCode) + ' lParam: '
                   + IntToStr(AMessage.KeyData);
     AMessage.result := 1;
     Exit;
  end;
  inherited;
end;
« Последнее редактирование: 13-08-2011 16:38 от RXL » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines