Announcement

Collapse
No announcement yet.

Minimieren vom Programm

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

  • Minimieren vom Programm

    Ich entwickle mit dem C++Builder 5.0. In einem Programm möchte ich eine Chef-Funktion einbauen. Wenn ich auf das Fenster Doppelklicke dann soll es sich minimieren. Mit dem Befehl

    Application->Minimize();

    geschiet garnichts.
    Und der nachfolgende Befehl

    Main_Form->WindowState = wsMinimized;

    minimiert sich das Programm aber auf dem Desktop bleibt ein der Border Balken übrig. Wenn ich das Programm mit dem Borderikon minimiere so verschwindet es ganz und bleibt nur noch in der Taskleiste stehen. Dies wäre mein Ziel. Kann mir jemand sagen wie der Befehl lautet damit sich das Programm korrekt minimiert?

    Gruss Renato

  • #2
    Nimm mal das hier:
    <PRE>
    ShowWindow(Application->Handle, SW_MINIMIZE);
    </PRE>

    Joche

    Comment


    • #3
      Ciao Jochen

      Das ist echt gut und funktioniert auch. Wenn möglich kanst du noch etwas dazu sagen. Wie könnte ich auf diese Lösung kommen oder weiss man das einfach so?

      Gruss Renat

      Comment


      • #4
        Hi Ronaldo,

        nee, das 'weiß' man nicht so. Bin in Internet darüber gestolpert, als ich dasselbe Problem hatte:

        http://www.bcbdev.com/faqs.htm

        Grüße Joche

        Comment


        • #5
          Hallo nochmal,

          ich war gestern ein wenig unter Zeitdruck, deshalb hier noch ein paar weitere Infos:

          ShowWindow ist ein Windows-API Funktion, man kann ein Fensterhandle, oder das Applicationhandle übergeben. Wird das Apphandle übergeben, wird das Hauptfenster entsprechend dem zweiten Parameter angezeigt.

          Application->Minimize ist eine VCL Funktion (die meiner Meinung nach einen Bug hat, aber vielleicht bin ich auch einfach zu blöd dafür). Eigentlich sollte das Hauptformular zusammen mit der Application minimiert werden. Die Application selbst hat noch ein unsichtbares Fenster. Laut Doku sollten nur die Fenster, die nicht das Hauptformular sind, auf den Desktop minimiert werden. Dieses Verhalten kann man aber ändern, man kann auch diese Fenster dazu bringen, sich in die Taskbar zu minimieren, indem man die CreateParams() überschreibt:

          Funktion muß im Header deklariert werden!
          <PRE>
          void __fastcall TForm1::CreateParams(TCreateParams &Params)
          {
          TForm::CreateParams(Params);
          Params.ExStyle |= WS_EX_APPWINDOW;
          // Params.WndParent = GetDesktopWindow();
          }
          </PRE>
          Schau dir mal an was passiert, wenn Du das Hauptformular mit diesen Parametern erzeugst und Form->Windowstate auf wsMinimized setzt.
          Abschließend kannst Du die 3 Zeile noch aktivieren und noch mal testen.

          Was direkt auffällt, ist das Du nach dem Programmstart 2 Icons in der Taskbar hast, eins für Projekt1 und eins für Form1...

          Grüße Joche

          Comment

          Working...
          X