Einzelnen Beitrag anzeigen

Fisti

Registriert seit: 9. Jan 2009
14 Beiträge
 
#6

Re: Popup Fenster - stay on top

  Alt 4. Aug 2009, 11:47
Hallo Chris

Danke dir für deine Antwort. Dein Tipp MsgWaitForMultipleObjects zu verwenden hat mich wirklich weiter gebracht. Nun sehe ich meine Hinweisform und sie ist nicht mehr nur weis.

Nun ist dafür aber das Problem mit dem Stay-on-top wieder aufgetaucht. Die Hinweisform ist nicht mehr im Vordergrund.

Ich habe in der Hinweisform bisher folgendes gemacht:

Formstyle = fsStayOnTop

und im FormCreate
SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Der komplette Code sieht so aus:

Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
var
  _myForm: TForm1;
  ...
begin

  _myForm := TForm1.Create(self);
  _myForm.UebergabeWert := 'blabla';
  _myForm.Show;

  //Externe Software starten
  if not CreateProcess( nil,_pAppName,nil,nil,False,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,_StartupInfo,_ProcessInfo)
  then begin
    _lwResult := WAIT_FAILED;
    exit;
  end;

  //Warten bis externe Software beendet wurde
  _RunFinished := false;
  repeat
    _WaitResult := MsgWaitForMultipleObjects(1, _ProcessInfo.hProcess, FALSE, INFINITE, QS_ALLINPUT);
    if _WaitResult <> WAIT_OBJECT_0 then begin
      Application.ProcessMessages;
      // Wurde die Anwendung selber terminiert?
      if Application.Terminated then _RunFinished := true;
    end else begin
      // der Process ist beendet...
      _RunFinished := true;
    end;
  until _RunFinished;


  _myForm.Destroy;

end;
Was mache ich noch falsch, dass die Hinweisform nicht ständig im Vordergrund ist?

Danke und Gruess
Fisti
  Mit Zitat antworten Zitat