AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Das Systemmenü der eigenen Anwendung ändern (NonVCL)
Thema durchsuchen
Ansicht
Themen-Optionen

Das Systemmenü der eigenen Anwendung ändern (NonVCL)

Ein Thema von Uncle Cracker · begonnen am 25. Dez 2003 · letzter Beitrag vom 30. Dez 2003
Antwort Antwort
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#1

Das Systemmenü der eigenen Anwendung ändern (NonVCL)

  Alt 25. Dez 2003, 20:30
Und schon wieder eine NonVCL Frage von mir, ich weiß, aber irgendwann muss man das ja auch mal können

Wie kann ich das Systemmenü der eigenen Anwendung ändern, also wenn ich oben mit der rechten Maustaste auf Caption klicke, also das wo Maximieren, Minimieren, Schließen usw. steht.

Jedoch würde ich das gern NonVCL machen.


Vielleicht kann mir jemand helfen.


Danke UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

1000 und 1 Beitrag

  Alt 25. Dez 2003, 20:36
Das sagen Luckie und Motzi zum Thema Änderung. Wenn du eigene Punkte hinzufügen bzw. vorhandene entfernen willst, da muss der Luckie mal was posten, der hatte schon mal irgendwo Code dafür.
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#3

Re: Das Systemmenü der eigenen Anwendung ändern (NonVCL)

  Alt 29. Dez 2003, 20:06
Ich habe das jetzt nochmal probiert, aber leider habe ich es nicht geschafft

Bei Assarbards Miscprograms ist auch so eine Funktion dazu dabei, bei LocalIP, aber leider habe ich es nicht hinbekommen das in mein Programm zu machen.

Folgende Funktion habe ich für VCL gefunden:

Code:
private
  procedure AppMessage(var Msg: TMsg; var Handled: Boolean);

procedure TForm1.FormCreate(Sender: TObject);
var
   Menu: THandle;
begin
  Menu := GetSystemMenu(Application.Handle, False);
  ModifyMenu(Menu, sc_Close, mf_ByCommand, sc_Close, 'E&xit'#9'Alt+F4');
  AppendMenu(Menu, mf_Separator, 0, #0);
  AppendMenu(Menu, mf_ByCommand, 100, '&wiegehts...');
  AppendMenu(Menu, mf_ByCommand, 101, '&Hallo');
  Application.OnMessage := AppMessage;
end;

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.message = WM_SYSCOMMAND then
  begin   if Msg.wParam = 100 then
    begin     ShowMessage('Wie gehts?');
      Handled := True;
    end;
    if Msg.wParam = 101 then
    begin
      ShowMessage('Hallo');
      Handled := True;
    end;
  end;
end;
Nur leider kann man das nicht in NonVCL umwandeln, ich zumindestens nicht

Vielleicht kann mir nochmal jemand helfen.


Danke UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Das Systemmenü der eigenen Anwendung ändern (NonVCL)

  Alt 29. Dez 2003, 20:33
In einem NonVCL-Programm sollte das hier
Delphi-Quellcode:
Menu := GetSystemMenu(HWnd, False);
ModifyMenu(Menu, sc_Close, mf_ByCommand, sc_Close, 'E&xit'#9'Alt+F4');
AppendMenu(Menu, mf_Separator, 0, #0);
AppendMenu(Menu, mf_ByCommand, 100, '&wiegehts...');
AppendMenu(Menu, mf_ByCommand, 101, '&Hallo');
am Besten bei der Behandlung von WM_CREATE in der Window-Prozedur des entsprechenden Fensters stehen.
Die Reaktion auf WM_SYSCOMMAND kommt ebenfalls in diese Window-Prozedur.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#5

Re: Das Systemmenü der eigenen Anwendung ändern (NonVCL)

  Alt 29. Dez 2003, 20:44
Hilft auch nicht, nur das ich jetzt mein Programm nicht mehr schließen kann

Wenn ich auf den X-Button klicke passiert nix mehr.
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Das Systemmenü der eigenen Anwendung ändern (NonVCL)

  Alt 30. Dez 2003, 16:54
Funktionieren bei dir die zusätzlich eingefügten Befehle?

Dein Problem klingt nämlich ganz danach, als ob du bei der Nachricht WM_SYSCOMMAND immer 0 zurückgibst. Das darfst du aber nur, wenn du die entsprechende Nachricht auch wirklich verarbeitet hast, in deinem Beispiel, wenn wParam = 100 oder 101 ist. Sonst verhinderst du, dass Windows die vordefinierten Reaktionen auf bestimmte SYSCOMMAND-Nachrichten ausführt - zum Beispiel das Schließen des Fensters.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 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