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

Вниз

PostMessage   Найти похожие ветки 

 
АИК   (2008-02-22 08:59) [0]

Здорова всем
Сделал две программки, в одну разместил ListBox а в другой отправляю сообщения первому (с помощью PostMessage) в общем подскажите как сделать код чтобы форма первой отрабатывала входящие сообщения?


 
Palladin ©   (2008-02-22 09:04) [1]


> как сделать код

руками вестимо


> форма первой отрабатывала входящие сообщения

пишем обработчик сообщения виндовс у того кому отправляешь


 
АИК   (2008-02-22 09:19) [2]


> пишем обработчик сообщения виндовс у того кому отправляешь

Прга первой находит HWND второго окна и отправляет ему сообщения
или я тебя неправильно понял


 
Сергей М. ©   (2008-02-22 09:22) [3]


> отправляет ему сообщения


Показывай код ..


 
АИК   (2008-02-22 09:29) [4]

var
h: HWND;
S: String;
i:Integer;
Begin
 h:=FindWindowex(findwindow(nil,"Okno_Priemnika")
          ,0,"ListBox1",nil);
 if h<>0 then  begin
    s:=Edit1.Text;
    For i:=1 to length(Edit1.Text) do
    PostMessage(h, WM_CHAR, Ord(S[i]), 0);
 end;
end;


 
Сергей М. ©   (2008-02-22 09:34) [5]

Непонятно, за каким лешим понадобилось посылать кучу сообщений вместо одного-единственного, например, WM_COPYDATA .. Да еще и асинхронно ..


 
Palladin ©   (2008-02-22 09:52) [6]


> АИК   (22.02.08 09:29) [4]

и чего в результате получиться то должно?


 
АИК   (2008-02-22 09:59) [7]


> и чего в результате получиться то должно?

Резльтат h равен 0 видимо  FindWindowex ненаховит ListBox1
Делаю иначе
h:=findwindow(nil,"Okno_Priemnika")
if h<>0 then  begin
   s:=Edit1.Text;
   For i:=1 to length(Edit1.Text) do
   PostMessage(h, WM_CHAR, Ord(S[i]), 0);
end;
Всё работает но сообшения получает окно формы и хотелось бы узнать можно его как нибуть отработать а отуда я передам его на ListBox1


 
Сергей М. ©   (2008-02-22 10:10) [8]

Посылай окну формы синхронное (SendMessage) сообщение WM_COPYDATA, в параметрах которого указывай всю передаваемую строку и "координаты" конечного получателя твоего сообщения, например, имя целевого лисбокс-компонента.

По получении сообщения форма установит нужное св-во указанного в сообщении компонента в значение, равное строковому значению, переданному параметром  сообщения.


 
Palladin ©   (2008-02-22 10:11) [9]

я тебя спрашиваю чего ты от listbox"а хочешь своими сообщениями?


 
АИК   (2008-02-22 10:28) [10]


> Сергей М

Вроде SendMessage также может послать только один символ, но мне интересней другое к примеру если я расположи на другом окне несколько listbox"сов и в передаваемом ему сообшении буду указывать для какого именно листбокса оно указана мне всего лиш нужно это - как отработать входяшее сообшение будьто через PostMessage или SendMessage у окна приемника


 
Сергей М. ©   (2008-02-22 10:37) [11]


> АИК   (22.02.08 10:28) [10]


Ответь сначала на [9]


 
АИК   (2008-02-22 10:37) [12]


> я тебя спрашиваю чего ты от listbox"а хочешь своими сообщениями?

Опыты проводить для привавки знаний но если тебе станет от этого легче то я могу заменить Listbox на Memo или Edit


 
Сергей М. ©   (2008-02-22 10:48) [13]


> АИК   (22.02.08 10:37) [12]


> Опыты проводить


Опыты проводить нужно после постановки задачи.

Как выглядит твоя задача ? Какую реакцию listbox"а ты ожидаешь увидеть при получении им асинхронного WM_CHAR-сообщения ?


 
АИК   (2008-02-22 11:00) [14]


> Как выглядит твоя задача ?

На ваши вопроси отвичать чего показывает результат


 
Palladin ©   (2008-02-22 11:02) [15]

Пиши на русском, я нифига не понял чего ты сказал.


 
{RASkov} ©   (2008-02-22 11:18) [16]

> [12] АИК   (22.02.08 10:37)

Шли сообщения в таком виде
SendMessage(H, Mes, Кому, Что);
где H   - приемник сообщения(пусть будет всегда форма)...
   Mes - тип сообщения, например - WM_USER+1
   Кому- Кому конкретно адресовано (например, если ограниченный и постоянный круг получателей, то можно организовать константами)
   Что - Собственно передаваемые данные.....

Пример:
const WM_MYMESS = WM_USER+1;
...............
type TSendCtrl = (scEditName, scEditParam, scMemo, scListBox, scRadioGrp);
.....
 public
   procedure MyMess(var Mes: TMessage); message WM_MYMESS;
.............
procedure TForm1.MyMess(var Mes: TMessage);
begin
 case TSendCtrl(Mes.WParam) of
  scEditName: Edit1.Text:=PChar(Mes.LParam);
  scEditParam: Edit2.Text:=PChar(Mes.LParam);
  scMemo: Memo1.Lines.Add(PChar(Mes.LParam));
  scListBox: ListBox1.Items.Add(PChar(Mes.LParam));
  scRadioGrp: RadioGroup1.ItemIndex:=Mes.LParam;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 SendMessage(Handle, WM_MYMESS, ORD(scEditParam), Integer(Pchar("передаваемый текст, например")));
 SendMessage(Handle, WM_MYMESS, ORD(scRadioGrp), 5);
end;


Для упрощения сделал все в одном приложении... Для двух - нужно во втором объявить константы для улучшения читабельности кода...

ЗЫ: Только не нужно мой пример нигде использовать - это плохой пример. )Так... для наглядности....


 
Плохиш ©   (2008-02-22 13:48) [17]


> АИК   (22.02.08 10:37) [12]
> Опыты проводить для привавки знаний но если тебе станет
> от этого легче то я могу заменить Listbox на Memo или Edit

Хочешь "Опыты проводить" - проводи сам, пока что ты пытаешься заставить присутствующих проводить свои дебильные "опыты"...


 
Johnmen ©   (2008-02-22 14:08) [18]

...и легче им не становится. Вона {RASkov} ©  в запой ушёл...


 
Leonid Troyanovsky ©   (2008-02-23 09:31) [19]


> АИК   (22.02.08 08:59)  

> подскажите как сделать код чтобы форма первой отрабатывала
> входящие сообщения?

http://groups.google.com/group/fido7.ru.delphi.chainik/msg/ca42e0565d4fea54

--
Regards, LVT.



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

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

Наверх




Память: 0.51 MB
Время: 0.019 c
15-1202820631
Ega23
2008-02-12 15:50
2008.03.23
Коллеги, нужна помощь в тестировании программы.


2-1204027452
AlexeyMir
2008-02-26 15:04
2008.03.23
Компонент в run-time без выдачи ему имени


2-1204035970
s_t_d
2008-02-26 17:26
2008.03.23
Масштаб просмотра для элемента QuickRep


2-1204115691
Иван Владимирович
2008-02-27 15:34
2008.03.23
MSSqlServer 2000


2-1204013996
kiberg
2008-02-26 11:19
2008.03.23
свойство в виде массива