Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.01.15;
Скачать: CL | DM;

Вниз

Message методы   Найти похожие ветки 

 
Drowsy ©   (2015-01-30 06:57) [0]

Почему в справочниках указывается, что
"номера сообщений от 1 до WM_USER-1 зарезервированы системой, от WM_USER до $7FFF – для пользовательских сообщений"
а во множестве примеров спокойно используют сообщения из диапазона системных, например:

const
MSG_STRING = 1;
MSG_INT = 2;

можно обмениваться строковыми и целочисленными данными между классами через message методы:

type
TClass1 = class
private
 FSomeString: WideString;
 procedure OnStringGet(var Msg: TDataMessage); message MSG_STRING;
 procedure OnIntegerReceived(var Msg: TDataMessage); message MSG_INT;
end;

procedure TClass1.OnIntegerReceived(var Msg: TDataMessage);
begin
Msg.Result := Msg.Data * 2;
end;

procedure TClass1.OnStringGet (var Msg: TDataMessage);
begin
FSomeString := "test string example";
Msg.Result := Integer(PWideChar(FSomeString));
end;


 
MBo ©   (2015-01-30 07:51) [1]

Данный пример показывает, как в своем классе использовать механизм сообщений. С Windows сообщениями это не пересекается


 
sniknik ©   (2015-01-30 07:59) [2]

не все системные события делают что-то важное/полезное у тебя в программе-форме. нет проблем перекрыть их... но вот попробуй так перекрыть событие перерисовки например и поймешь почему лучше следовать рекомендациям справочников.


 
icWasya ©   (2015-01-30 09:15) [3]

А вот если такие методы приделаешь к форме, то получится очень странно, поскольку
 WM_CREATE           = $0001;
 WM_DESTROY          = $0002;
, и форма даже не появится на экране.


 
1234567   (2015-01-31 15:26) [4]

Тут речь идет об оконньіх сообщениях, то есть, єто имеет отношение к классам, порожденньім от TWinControl, так как они используют системньіе оконньіе сообщения.
А в примере просто класс от TObject, которьій не имеет стандартного обработчика оконньіх сообщений, то есть, он не окно вообще; поєтому ему можно посьілать что угодно, и все єти сообщения ни с чем пересекаться не будут.


 
Rouse_ ©   (2015-01-31 16:35) [5]


> А в примере просто класс от TObject, которьій не имеет стандартного
> обработчика оконньіх сообщений, то есть, он не окно вообще;
>  поєтому ему можно посьілать что угодно, и все єти сообщения
> ни с чем пересекаться не будут.

Стесняюсь спросить, раз уж речь зашла об "оконных сообщениях" (слово-то какое) на какой хэндл твоему классу от TObject они приходить будут? ;)


 
Rouse_ ©   (2015-01-31 16:47) [6]

ЗЫ: забыл ответ на вопрос топикстартера.

> а во множестве примеров спокойно используют сообщения из
> диапазона системных, например:

Они просто не придерживаются концепции, и именно в приведенных примерах этот код будет работать, но: http://www.gunsmoker.ru/2010/05/90.html



Страницы: 1 вся ветка

Текущий архив: 2017.01.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
15-1457472602
Юрий
2016-03-09 00:30
2017.01.15
С днем рождения ! 9 марта 2016 среда


15-1454450816
Konstantin-78
2016-02-03 01:06
2017.01.15
“Delphi-ий” вирус – TrojWare.Win32Downloader.Bandload.arh


3-1308823507
Тимофей Ю.
2011-06-23 14:05
2017.01.15
ado и access


15-1449783004
Юрий
2015-12-11 00:30
2017.01.15
С днем рождения ! 11 декабря 2015 пятница


2-1422887394
Вова
2015-02-02 17:29
2017.01.15
Перенос Delphi на другой PC