Вниз
Скачать: CL | DM;

Как из отдельного потока послать сообщение главной форме?   Найти похожие ветки 

 
Aleksandr.   (2004-08-27 18:44) [0]

Попытался через обычнй ПостМессаге хэндлу главного окна, и программа на них постоянно вываливается.


 
TUser ©   (2004-08-27 18:45) [1]

Послать сообщение хэндлу нельзя.
Ответить на такой вопрос без кода - тоже.


 
Aleksandr.   (2004-08-27 18:57) [2]

Это на приеме работает:

procedure TMainForm.WndProc(var Message: TMessage);
var
 s    : string;
 P    : PChar;
 i    : integer;
begin
 if (Message.Msg=um_UpdatorStart) then begin
   P:=(PChar(Message.LParam));
   s:=StrPas(P);
   StrDispose(P);
   i:=Message.WParam;
   UpdatorStart(s,i);
 end
 else
   inherited
end;


А это на посылке:

procedure TATIUpdator.DoOnStart(const Msg: string; const Cnt: Integer);
var
 P : PChar;
begin
 P:=StrNew(PChar(Msg));
 if FMsgHandle<>0 then
  PostMessage(FMsgHandle,UM_UpdatorStart,Cnt, Integer(P))
end;


 
clickmaker ©   (2004-08-27 19:00) [3]


> Aleksandr.   (27.08.04 18:44)

что значит "вываливается"? текст ошибки?


 
Aleksandr.   (2004-08-27 19:06) [4]

Никакого текста. Никакой обработки. Просто выпадает и все. А если из Делфи - то в окно CPU, и никакой трассировки не позволяет.
Да, код для UpdatorStart:

try
 if Visible then begin
   if NOT Assigned(FPB) then begin
     FPB:=TProgressBar.Create(nil);
     FPB.Parent:=StatusBar;
     FPB.Left:=StatusBar.Left+StatusBar.Panels[0].Width+1+StatusBar.Panels[1].Width+1+StatusBar.Panels[2].Width;
     FPB.Top:=1;
     FPB.Height:=StatusBar.Height-2;
     FPB.Smooth:=true;
     FPB.Cursor:=crSQLWait;
     StatusBar.Cursor:=crSQLWait;
     FPB.Step:=1;
     FPB.Visible:=true;
     FPB.DoubleBuffered:=true;
     FPB.Width:=StatusBar.Width-FPB.Left-3;
     FPB.Anchors:=[akLeft,akRight,akBottom];
     FPB.Position:=0;
     FPB.Perform($0409, 0, clFuchsia);
     FPB.Invalidate
   end;
   if Screen.Cursor<>crSQLWait then
     Screen.Cursor:=crSQLWait;
   if Msg<>"" then
     StatusBar.Panels[2].Text:=Msg;
   if Cnt>0 then
     FPB.Max:=Cnt;
   FPB.Position:=0;
   Application.ProcessMessages
 end
except
  on E:Exception do
    AddLog(E.Message)
end



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
14-1093400199
SnapIn
2004-08-25 06:16
2004.09.12
Где можно взять MapX ActiveX-компонент?


3-1092817275
ANB
2004-08-18 12:21
2004.09.12
Ошибки выполнения хранимых процедур MS SQL при запуске из Delphi


3-1092654497
yaric
2004-08-16 15:08
2004.09.12
Программная деактивация тригерра


9-1085025564
маг Гыр
2004-05-20 07:59
2004.09.12
Фон в игре


14-1093275200
Igor_thief
2004-08-23 19:33
2004.09.12
RAVE




   Наверх