Форум: "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