Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2014, 17:31   #1
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию Вопрос по message

Добрый день\вечер
Есть у меня 3 константы, есть функция обрабатывающая сообщения
Код:
const
  WM_NEW_1 = WM_APP + 1001;
  WM_NEW_2 = WM_APP + 1002;
  WM_NEW_3 = WM_APP + 1003;

  ...

type 
 MainClass = class
   ....
   procedure UpdateStatus(var Msg: TMessage); message WM_NEW_1 or WM_NEW_2 or WM_NEW_3;
 end;

procedure MainClass.UpdateStatus(var Msg: TMessage);
begin
    case Msg.Msg of
      WM_NEW_1:
        sLabel1.Caption := '1';
      WM_NEW_2:
        sLabel2.Caption := '2';
      WM_NEW_3:
       sLabel3.Caption := '3';
    end;
end;
Но так не работает, не вызывается процедура UpdateStatus . Если указывать одну константу, то все ок.
Подскажите пожалуйста, как правильно указать все 3 константы, что бы вызывалась процедура UpdateStatus
bakanaev вне форума Ответить с цитированием
Старый 02.09.2014, 20:49   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сделать три процедуры.

тем более что ваш код от этого лишь выиграет.

в вашем случае обработчик поставился на сообщение: (WM_NEW_1 or WM_NEW_2 or WM_NEW_3)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.09.2014, 21:00   #3
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,777
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
тем более что ваш код от этого лишь выиграет.
Полностью согласен.

Тем не менее, если хочется поизвращаться с case, вместо UpdateStatus нужно перекрыть TObject.DefaultHandler и расписать case в нем.
Vapaamies вне форума Ответить с цитированием
Старый 03.09.2014, 10:44   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

А можно юзать событие Application.OnMessage, если в проекте допустимо uses Forms.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
message в Delphi RuVarez Общие вопросы Delphi 3 24.04.2012 13:50
The message resource is present but the message is not found in the string/message table Apokal Win Api 0 19.05.2011 18:06
Вопрос по адресной арифметике и Message в консольных приложениях Enikov Помощь студентам 5 01.01.2009 19:44
Message-ы Altera Общие вопросы Delphi 9 15.02.2008 09:08