Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#14

Re: WM_SIZE + SIZE_MINIMIZED geht nicht?

  Alt 30. Jul 2003, 16:18
Zitat von oki:
Das heißt, dass wmSize beim minimieren nicht aufgerufen wird.
Doch, eigentlich schon (s. nonVCL-Demo).

Zitat von Chakotay1308:
Unter Delphi (nonVCL) geht es nur sporadisch. D.h. beim normalen Minimieren funzt es und beim Win+M wieder nicht...
Das kann ich nicht bestätigen. Ich habe natürlich mein nonVCL-Beispiel (OnMinimize.dpr) mehrmals ausprobiert, und es verschwand immer in der TNA - egal, ob ich´s nun via Maus oder Systemmenü oder WIN+M minimiert habe.

Zitat von Snoopy240871:
vielleicht hilft dir das weiter. [...]
Ich hatte mal so etwas ähnliches bei AUQ.de gepostet. Aber das entspricht der Idee mit WM_SYSCOMMAND/SC_MINIMIZE. Wenn ich das Programm mit der Maus oder dem Systemmenü minimiere, dann verschwindet es natürlich in der TNA. Aber wenn ich den Hotkey WIN+M benutze, dann wird es nur normal in die Startleiste minimiert.
Darum bin ich ja auf die Sache mit WM_SIZE/SIZE_MINIMIZED gekommen. Aber dennoch Danke für den Vorschlag.


@Motzi: Ich werde mir deine Komponente wohl mal ansehen müssen. Ich hab´s gerade mal so versucht:
Delphi-Quellcode:
var
  oldproc : pointer;

function FormProc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT;
  stdcall;
begin
  case uMsg of
    WM_SIZE:
      if(wp = SIZE_MINIMIZED) and
        (Shell_NotifyIcon(NIM_ADD,@NID)) then
      begin
        ShowWindow(Application.Handle,SW_HIDE);
        Result := 0;
        exit;
      end;
  end;

  Result := CallWindowProc(oldproc,wnd,uMsg,wp,lp);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  NID.wnd := self.Handle;
  NID.hIcon := LoadIcon(hInstance,'DIABLO');

  oldproc := pointer(SetWindowLong(self.Handle,GWL_WNDPROC,
    integer(@FormProc)));
end;
Ist zwar IMHO rein technisch mit dem Überschreiben der "WndProc" identisch (s. Code oben), nur halt auf dem Weg, den man normalerweise für API-Programme benutzt. Ergebnis: keine Wirkung ... es sei denn, ich benutze SIZE_MAXIMIZED ...
  Mit Zitat antworten Zitat