Entwickler-Ecke
Windows API - nonVCL und WM_SYSCOMMAND
tempme - Fr 08.04.05 19:48
Titel: nonVCL und WM_SYSCOMMAND
Hallo zusammen,
ich stecke im Moment in einer Sackgasse, komme leider da irgendwie nicht weiter.
Vielleicht kann einer von euch mir weiterhelfen.
Nun zu meinem Problem:
- die komplette Applikation ist nonVCL
- das Hauptfenster wird mit Hilfe von WinAPIs erstellt, ich benutze keine Dialog (Resource)
- Beim Start ist das Fenster unsichtbar
- TNA Icon wird erzeugt
- je nach Status wird das Fenster versteckt bzw. hervorgehoben (ShowWindow)
- das Fenster hat folgende Styles: WS_SYSMENU, WS_CAPTION, DS_CENTER
- Ich möchte nun SC_CLOSE abfangen, um das Fenster wieder minimieren zu können anstatt das komplette Programm zu beenden
- In der WndProc benutze ich folgenden Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| case uMsg of WM_SYSCOMMAND: begin if wParam = SC_CLOSE then begin PostMessage(hWnd, WM_COMMAND, IDM_OPTIONS, WM_INVIS); end; end; end; |
Wenn ich nun das Programm starte und versuch das Fenster zu bewegen, dann klappt es nicht.
Ich weiss nun auch dass es an dem o.g. Code liegt. Ich schätze ich muss weitere Messages abfangen und behandeln, nur leider weiss ich nicht welche und wie.
Hat jemand eine Idee?
Delete - Fr 08.04.05 21:30
Musst du auch nicht wissen. Ist die Message, die dich interessiert, nicht dabei, dann rufe einfach die "DefaultWindowProc" auf. Hier ein Beispiel aus meiner TNA-Demo, bei der ich beim Minimieren ein TNA-Icon anlegen lasse. Alle anderen Messages sollen aber durchgehen, und darum habe ich das so gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| WM_SIZE: if(wp = SIZE_MINIMIZED) then begin if(Shell_NotifyIcon(NIM_ADD,@NID)) then ShowWindow(wnd,SW_HIDE) else Result := DefWindowProc(wnd,uMsg,wp,lp); end else Result := DefWindowProc(wnd,uMsg,wp,lp); |
tempme - Sa 09.04.05 00:13
Dank dir Mathias.
Nun klappt es.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!