Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dialog minimiert sich nicht (https://www.delphipraxis.net/1-dialog-minimiert-sich-nicht.html)

Luckie 29. Mai 2002 17:10


Dialog minimiert sich nicht
 
Hallo, einer muß ja mal anfangen :mrgreen:.

Ich habe einen Dialog, der sichbeim Klicken auf den Minimierenbutton in die TNA verfüchtigt, dann wird auch das Icon angezeigt. Maximiere ich ihn wieder, wird auch das Icon aus der TNA gelöscht.
Jetzt wollte ich das Programm mit einem Parameter starten, so dass es sich gleich beim Start in die TNA verzieht (, wenn man es in die Autostartgruppe packt).
Folgender Code:

Code:
case uMsg of
    WM_INITDIALOG:
    begin
      if ParamCount > 0 then
      begin
        if ParamStr(1) = '/m' then
          SendMessage(hDlg, WM_SIZE, SIZE_MINIMIZED, 0);
      end;
Und in WM_SIZE:

Code:
WM_SIZE:
    begin
     if wParam = SIZE_MINIMIZED then
      begin
        nid.cbSize := SizeOf(TNotifyIconData);
        nid.Wnd   := hDlg;
        nid.uID   := IDI_TRAY;
        nid.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
        nid.uCallbackMessage := WM_SHELLNOTIFY;
        nid.hIcon := LoadIcon(hInstance,MAKEINTRESOURCE(1));
        lstrcpy(nid.szTip, 'Delphi-Forum Code2UBB');
        ShowWindow(hDlg, SW_HIDE);
        Shell_NotifyIcon(NIM_ADD, @nid);
      end;
    end;
Nur das funktioniert nicht, das Icon erscheint zwar in der TNA aber der Dialog ist noch zu sehen.
Was mache ich also falsch? Ich verstehe es nicht, denn in WM_SIZE bekommt er ja ein: ShowWindow(hDlg, SW_HIDE);.

Christian Seehase 30. Mai 2002 00:22

Moin Luckie,

lange nicht gesehen :mrgreen:

Aber nun zu Deinem Problem.
Versuchs mal ersatz Weise mit

Code:
SetWindowLong(hDlg,GWL_STYLE,GetWindowLong(hDlg,GWL_STYLE) and not WS_VISIBLE);
(statt ShowWindow, versteht sich)

Hab' ich gestern erst so benutzt (bis mir einfiel, dass ich das bei VCL ja einfacher haben kann) :x

Luckie 30. Mai 2002 07:26

Tja, so geht es manchmal und dann triift man sich wo ganz anders wieder.

Aber zu deinem Vorschlag: Geht auch nicht. Ich verstehe es einfach nicht.

MathiasSimmack 30. Mai 2002 17:03

Okay, dann will ich auch mal
 
Sende doch mal ein WM_SYSCOMMAND mit SC_MINIMIZE, testweise.
Vielleicht geht das ja?

Ach ja: ich bin jetzt auch hier.
*Zensiert* Erste Verfahrnung :mrgreen:

Luckie 30. Mai 2002 17:09

Hallo, schön dich hier zu sehen.

Im Spotlight wurd emir geholfen, denke ich mal, ich habe es noch nicht ausprobiert. Aber so dringend ist es ja nun nicht mehr.
Wenn man den Dialog mit CreateDialog aufruft, braucht man eine Nachrichtenschleife und da soll es funktionieren, wenn man es da einbaut.

MathiasSimmack 30. Mai 2002 17:50

Ähem, vergiss meinen Vorschlag.
Der hätte eh nicht funktioniert. Hab´s gerade mal probiert. :(

Luckie 30. Mai 2002 18:04

Hatte ich übrigens auch schon alles ausprobiert, bin ja kein Anfänger mehr :lol:.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz