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

Вниз

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

 
Dstr ©   (2006-05-07 15:55) [0]

Уважаемые эксперты,нужна ваща помощь:
У меня есть процедура
procedure TSearchUser.ApplicationEvents1Message(var Msg: tagMSG;var Handled: Boolean);

которая должна реагировать на API сообщения,но не придает ни 1 признака жизни...


 
begin...end ©   (2006-05-07 17:45) [1]

(* включает телепатор *)

В этот обработчик могут попадать только АСИНХРОННЫЕ (посланные через PostMessage) сообщения.

(* выключает телепатор *)


 
Dstr ©   (2006-05-07 21:01) [2]

У меня и посланы через PostMesaage(А я блин думал,какая разница меш Post и Send) Но все равно не реагирует она...


 
begin...end ©   (2006-05-07 21:30) [3]

> Dstr ©   (07.05.06 21:01) [2]

Тогда приводите конкретный код.


 
Dstr ©   (2006-05-08 10:38) [4]

Вобщем ето ICQ

procedure TForm1.SNAC_15_3(p:PPack);

....
 $9A010A: begin   // search-answer (last)
                     if MessageSubType=$9A010A then EndOfSearch:=true;
                     PacketRead16(p);// len of LNTS
                     SearchInfo.uin := PacketRead32(p);
                     SearchInfo.nick := PacketReadString(p);
                     SearchInfo.first := PacketReadString(p);
                     SearchInfo.last := PacketReadString(p);
                     SearchInfo.email := PacketReadString(p);
                     SearchInfo.auth := PacketRead8(p);
                     SearchInfo.status := PacketRead8(p); // state ????????
                     ShowMessage(IntToStr(SearchInfo.uin));
                     PutSearchInfo(cookie,SearchInfo); // send it to search window
                     PacketRead8(p);// #0 of LNTS
                    end;


procedure TForm1.PutSearchInfo(cookie:word;What:TSearchRec);//Сдесь данные посылаются
var  PBuff : PSearchRec;
TMS: TagMsg;
Handled: Boolean;
begin
    new(PBuff);
    if PBuff <> nil then begin
      pbuff^ := What;
      PostMessage(Handle,msg_SInfo,cookie,longint(pbuff));        ShowMessage("sch");
      TMS.message := msg_UInfo;
      TMS.wParam := cookie;
      TMS.lParam := longint(pbuff);
      SearchUser.ApplicationEvents1Message(TMS,Handled);
    end;
end;


procedure TSearchUser.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);  ////А сдесь подхватываются
var  PBuff : PSearchRec;
    i : integer;
    IsAlways : boolean;
begin
    if Msg.message = msg_SInfo then begin
      if (Msg.wParam = Cookie)then begin
        Handled := false;
        PBuff := PSearchRec(Msg.lParam);
        if FoundNum = 50 then exit;
        IsAlways := false;
        for i:=0 to FoundNum-1 do
        if FoundUsers.Cells[1,i+1] = s(PBuff^.uin) then begin
           IsAlways := true;
           break;
        end;
        if not IsAlways then
        with PBuff^ do begin
          if uin <> 999999999 then begin
            FoundList[FoundNum].UIN := uin;
            FoundList[FoundNum].NICK := nick;
            FoundList[FoundNum].FIRST := first;
            FoundList[FoundNum].LAST := last;
            FoundList[FoundNum].PRI_E_MAIL := email;
            FoundList[FoundNum].AUTH := auth;
            FoundList[FoundNum].STATUS := status;
            inc(FoundNum);
          end else Failure := true;
        end;
        Dispose(PBuff);
      end;
    end;
end;

Скажи че не так, а то я уж обрадовался,асю сварганил,а хрен та там,
Ето все замутено ради

while not EndOfSearch do Application.ProcessMessages;


 
begin...end ©   (2006-05-08 11:55) [5]

> Dstr ©   (08.05.06 10:38) [4]

> Скажи че не так

Пока непонятно. Потому что Вы сами ещё толком не объяснили, "чё не так".

Насколько я понял, всё это происходит в пределах одного приложения. И из метода некоторой формы посылается асинхронное сообщение, которое НЕ ловится в обработчике ApplicationEvents, расположенного на другой форме. Я правильно понял?

Если да, то как Вы узнали, что оно не ловится? Условие "Msg.message = msg_SInfo" не выполняется?


 
Dstr ©   (2006-05-08 12:44) [6]

Да,правелно понял,говори ты блин на "ты"...Мне 15 лет...Я по асе общаюсь с людьми старше меня на 10 лет на "ты"...

1.Я ставил прерывание, которое меня не вывело на ету функцию
2.while not EndOfSearch do Application.ProcessMessages;
Выполняется до тех пор,пока не придет нужное сообщение от сервера и EndOfSearch не станет true.А станет оно после того как ApplicationEvents1Message выполнит свое черное дело и составит FoundList,а дальше после while not EndOfSearch do Application.ProcessMessages; подхватывает етот список и засфигачивает там все по форме...


 
Eraser ©   (2006-05-08 15:59) [7]


> Dstr ©   (08.05.06 12:44) [6]
>
> Да,правелно понял,говори ты блин на "ты"...Мне 15 лет...
>

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

>    if (Msg.wParam = Cookie)then begin

вот на этой строке брейк-поинт срабатывает?


 
Dstr ©   (2006-05-08 18:11) [8]

Хехе,Дядетчки за полтинник никогда не заходят на форумы,потомучто они либо все уже давно знают(не точто мы смертные),или они работают в элитнейших шарагах,в компании из 50 человек,где блин TCChat  устроит 5 таких форумов,тем более на форуме такой закон:"Если кто на тебя обидется,тебе по-барабану,потомучто ты никогда их не видел,возможно не увидишь",конечно не стоит злоупотреблять им,дабы не запортить репутацию на форуме...

Вобщем там такая штука:
while not EndOfSearch do Application.ProcessMessages; после PostMessage срабатывает и тусует дальше функцию,а EventMessage не подхватывает и ваще не срабатывает,проверял брейкпоинтами


 
Eraser ©   (2006-05-08 21:46) [9]


> Dstr ©   (08.05.06 18:11) [8]
>
> Хехе,Дядетчки за полтинник никогда не заходят на форумы

ошибаешься, и этот форум ярчайший пример этого :)

> Вобщем там такая штука:
...

сразу после PostMessage попробуй вписать Application.ProcessMessages;


 
Dstr ©   (2006-05-08 22:20) [10]

Ну мош хотя бывает иной тип:"Дядечки,похожие на дядечек,но не являющиюся на самом деле ими..."...Хотя мош я ошибаюсь...

Бля,прикинь сервак аси ваще перестал отвечать на запрос...Я опять доигрался...Хехе...

Короче там такая тема,Если начинаешь асю ебать всякими подключениями,отключениями,она ваще запрещает тебе некоторое время входить или начинает лаговать сервак по отношени ко мне,а часа через три становится все нормально.

Насчет Events,то спасибо тебе за помощь,но я уже нашел способ менее глючный,ето эшо раз убеждает что все Borland глючное,все ето мой последний проект на делфи!!!Я перехожу на C++ вижуальный,он и быстрее,и сам по себе,проги получаются более быстрее,маленькие,и самое главное неглючные(Как то не соответствует Microsoft,А вам не кажется?),и не надо ебать себе мозгу етими компонентами,1 глючней другого...Но теперь отступать от огромного проекта поздно :(



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

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

Наверх




Память: 0.48 MB
Время: 8.136 c
3-1146930148
parovoZZ
2006-05-06 19:42
2006.09.03
Кодировка таблиц


2-1155534022
031178
2006-08-14 09:40
2006.09.03
Как отобразить Messagebox поверх всех окон


15-1155237754
GanibalLector
2006-08-10 23:22
2006.09.03
Сайт(редактирование данных MySQL)


2-1155027490
ArtemESC
2006-08-08 12:58
2006.09.03
TFileStream...


2-1155656960
Nici
2006-08-15 19:49
2006.09.03
Вопрос





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