Announcement

Collapse
No announcement yet.

Maximize,Minimize,Restore WANN ???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Maximize,Minimize,Restore WANN ???

    <pre>
    Ich versuche seit geraumer Zeit eine Möglichkeit zu finden. Den Zeitpunkt mit zu kriegen,
    wenn man ein Minimiertes Fenster wiederherstellt. Also, habe ich versucht mittels der
    Message WM_Syscommand dies abzufangen. Aber irgendwie will das nicht klappen.
    Meiner Meinung nach sollte das doch mit folgenden Konstrukt laufen.
    <br>
    <br>
    Type
    TForm1 = class(TForm)
    private
    PROCEDURE WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
    end;
    <br>
    . . .
    <br>
    procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
    begin
    <b> INHERITED; // Ist dieser Eintrag überhaupt notwendig ?</b>

    aCaption:='';
    IF (Message.CmdType AND $FFF0 = SC_MAXIMIZE) THEN
    aCaption := '1 SC_MAXIMIZE'
    ELSE IF (Message.CmdType AND $FFF0 = SC_MINIMIZE) THEN
    aCaption := '2 SC_MINIMIZE'
    ELSE IF (Message.CmdType AND $FFF0 = SC_RESTORE) THEN
    <b>aCaption := '3 SC_RESTORE' // <-- Hier sollte es passieren, ODER???</b>
    ELSE IF (Message.CmdType AND $FFF0 = SC_CLOSE) THEN
    aCaption := '4 SC_CLOSE'
    ELSE
    aCaption := IntToStr(Message.CmdType AND $FFF0);

    <b> ShowMessage(aCaption);</b>
    end;
    <br>
    Ich habe hier nur ein ShowMessage gesetzt um das ganze besser zu beobachten,
    später soll dort ein Prozeß ablaufen der ein weiteres Fenster manipuliert.
    <br>
    Also das Ziel ist immer eindeutig mitzubekommen,
    wann sich der WindowState des (eines) Fensters ändert, und zwar zu welchen State genau.
    <br>
    Hast jemand dazu eine Idee?
    <br>
    Stefan
    </pre>

  • #2
    Hi Stefan,

    das Wiederherstellen eines minimierten Fensters, bekommst Du mit, in dem Du die Message WM_OPENQUERY abfängst ...

    Gruß Volke

    Comment


    • #3
      Hi Volker,<br>
      <br>
      das habe ich versucht nach zu vollziehen. <br>
      WM_OpenQuery ist aber in meiner API ein unbekannter Bezeichner <br>
      Ich habe es auch mit WM_QueryOpen versucht, <br>
      jedoch auf das wiederherstellen eines Minimierten Fensters <br>
      kamm jedoch dennoch keine Reaktion<br>
      <br>
      Gruss Stefan<br>
      <br>
      PS:<br>
      Das Fenster ist das Hauptfenster der Anwendung

      Comment


      • #4
        Hi Stefan,

        sorry sollte auch WM_QueryOpen sein ;-(( ...

        was ich noch nicht bedacht hatte war, daß das ganze nur funzt, wenn WindowState auf wsMinimized gesetzt wurde ...

        Aber sehe Dir doch mal WM_SHOWWINDOW an, ich denke das sollte Dir weiter helfen ...

        Gruß Volke

        Comment


        • #5
          Doppelt gestellte Frage, schau im anderen Ordner

          Comment


          • #6
            Hallo Hagen,<br>
            <br>
            ich habe mal mit der Suchfunktion des Forums versucht andere Ordenr zu durchsuchen<br>
            Suchbegriffe wie "Minimize" führten auch zum Erfolg.<br>
            Ich bin jedoch aus dem was ich gefunden habe nicht schlau geworden<br>
            Kannst Du mir sagen auf welchen Artikel Du Dich beziehst?<br>
            <br>
            Die Artikel die ich gefunden habe, konnten mir leider nicht weiter helfen<br>
            Da war einer, in dem Thomas Melchert und Du, eine Diskusion kommentierten,<br>
            Eine Zusammenfassung der Lösung war aber leider bei dem "Wortgefecht"<br>nicht nachzuvollziehen!<br>
            <br>
            Aber vieleicht meinst Du auch einen ganz andern Artikel.<br>
            <br>
            Gruss Stefa

            Comment


            • #7
              Hi

              Jo, das ist kurious denn ich hatte auf Deine Frage geantwortet. Da ich aber meine Antwort nicht hier vorfand nahm ich an das Du zweimal die selbe Frage an anderer Stelle gestellt hast.

              Also nochmal: das inherited ruft den DefaultHandler auf der dann das orginale Verhalten durchführt. D.h.
              <li>inherited zuerst, Dein Code arbeitet dann schon mit dem veränderten Fenster
              <li>inherited zuletzt, Dein Code arbeitet noch auf dem unveränderten Fenster
              <li>inherited weggelassen, Das originale Verhalten der Fenster ist deaktiviert, Dein code kann nun alles selber machen

              So, nun wm_SysCommand wird gesendet falls Du die Fenster-Buttons klickst, oder einen Doppelklick in der Titelzeile oder das SystemMenu bedienst. D.h. wm_SysCommand erfolgt auf eine Benutzerinteraktion und stellt der Befehl dar zu maximieren usw. Eine Veränderung hier würde nur die Bedienung des Fensters ändern, aber nicht auf das Maximieren reagieren. Dazu solltest Du die Messages wm_WindowPosChanging und wm_WindowPosChanged or wm_StyleChanging, wm_StyleChanged nutzen.

              Gruß Hage

              Comment

              Working...
              X