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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.007 c
15-1202821756
TankMan
2008-02-12 16:09
2008.03.23
Информация по написанию гаджетов....


15-1202872059
Slider007
2008-02-13 06:07
2008.03.23
С днем рождения ! 13 февраля 2008 среда


15-1202477787
Сатир
2008-02-08 16:36
2008.03.23
Рейтинг языков программирования


2-1188057946
Bora.ru
2007-08-25 20:05
2008.03.23
Установка атрибутов файла


3-1193337794
DiX
2007-10-25 22:43
2008.03.23
Изменения отображения в DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский