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

Вниз

Непонятки с POSTMESSAGE   Найти похожие ветки 

 
GuestTM   (2003-07-09 05:31) [0]

Простой код

var mss: integer;

procedure TForm1.DefaultHandler(var Message);
begin
with TMessage(Message) do
begin
if Msg = mss then
begin
ShowMessage("Custom Message Accepted");
end
else Inherited DefaultHandler(Message);
end;
end;

procedure TForm1.FormClick(Sender: TObject);
begin
PostMessage(wnd_Broadcast, mss, 1, 2); //???
( wnd_Broadcast, mss, 1, 2) Простой код

var mss: integer;

procedure TForm1.DefaultHandler(var Message);
begin
with TMessage(Message) do
begin
if Msg = mss then
begin
ShowMessage("Custom Message Accepted");
end
else Inherited DefaultHandler(Message);
end;
end;

procedure TForm1.FormClick(Sender: TObject);
begin
PostMessage(wnd_Broadcast, mss, 1, 2); //???
//! SendMessage(wnd_Broadcast, mss, 1, 2);
end;

initialization
mss := RegisterWindowMessage(PChar("wm_DemoWinMessage"));


Вопрос. Все работает отлично (принимаются сообщения), если посылать командой SendMessage, но если же использовать команду PostMessage, то
сообщение не обрабытывается. Вопрос очевиден. Почему не работает PostMessage для посылки к HWND_BROADCAST???


 
Игорь Шевченко ©   (2003-07-09 09:33) [1]

Application.OnMessage тоже не ловит это сообщение ?


 
wl ©   (2003-07-09 13:17) [2]

А если попробовать: PostMessage(Handle, mss, 1, 2);?


 
GuestTM   (2003-07-09 13:28) [3]

- А зачем Application.OnMessage? Ведь я использую более идентичный аналог Application.OnMessage, который является override-функций глобального приемника сообщений!

- >>А если попробовать: PostMessage(Handle, mss, 1, 2);?
в том то и дело, если использовать конкретный Handle, то все в порядке. Задача стоит именно в том, чтобы послать BROADCAST-сообщение.


 
Игорь Шевченко ©   (2003-07-09 14:37) [4]

Так ловит или не ловит ? :)


 
Spawn ©   (2003-07-09 18:32) [5]

MSDN:
If you send a message in the range below WM_USER to the asynchronous message functions (PostMessage and SendNotifyMessage), its message parameters cannot include pointers. Otherwise, the operation will fail. The functions will return before the receiving thread has had a chance to process the message and the sender will free the memory before it is used.

То есть если твоя месага меньше чем WM_USER, то будет облом


 
Spawn ©   (2003-07-09 18:33) [6]

Упс)) Это только если параметры указатели))


 
GuestTM   (2003-07-10 19:53) [7]

Так ведь же RegisterWindowMessage дает им значение "пользовательских" величин, то есть выше или равное WM_USER! А в MSDN приведен текст про то, что ниже диапазона WM_USER...



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
7-33830
Эдик Дятлов
2003-06-28 08:33
2003.09.11
Как уменьшить рабочую область Винды


3-33467
KIR
2003-08-20 15:02
2003.09.11
Транзакции в парадоксе...


1-33663
Dimaz-z
2003-08-29 22:55
2003.09.11
Как узнать из программы когда она была скомпилирована?


9-33425
cyborg
2003-03-07 02:38
2003.09.11
Конвертер из 24 битовых BMP в 16 битовый формат


14-33793
Romkin
2003-08-22 14:37
2003.09.11
А Кэрролла еще не поминали?