Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.11;
Скачать: [xml.tar.bz2];

Вниз

Непонятки с 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.09.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.015 c
1-33569
astro
2003-08-28 19:35
2003.09.11
Где найти или как создать компонент? Подробности дальше...


1-33678
Юлия
2003-08-29 09:41
2003.09.11
Можно ли для treeview сделать возможность отмечать узлы? (check)


1-33649
_MAD_
2003-08-30 16:59
2003.09.11
TCheckBox


3-33466
san
2003-08-21 06:29
2003.09.11
Составное Lookup-поле


14-33781
Дремучий
2003-08-22 14:35
2003.09.11
Фигня с ини-файлом.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский