Hvordan legge til elementer i systemet menu

Hvordan legge til elementer i systemmenyen øverst til venstre i skjemaet
skriver TForm1 = klasse (TForm) ... prosedyre FormCreate (Sender: TObject.); private prosedyre WMSYSCOMMAND (var budskapet: TWMSYSCOMMAND); Meldingen WM_SYSCOMMAND;
...
prosedyre TForm1.FormCreate (Sender: TObject); konst MenuCaption = '& Om ...'; Var i: Integer; SystemMenu: HMenu; MENUITEMINFO: TMENUITEMINFO; begynne SystemMenu: = GetSystemMenu (Håndtak, False); jeg: = GetMenuItemCount (SystemMenu); FillChar (MENUITEMINFO, sizeof (MENUITEMINFO), 0); {Ikke bruk sizeof (MENUITEMINFO) fordi det er påkrevet for Windows 95} MENUITEMINFO.cbSize: = 44; //Separator MENUITEMINFO.fMask: = MIIM_TYPE; MENUITEMINFO.fType: = MFT_SEPARATOR; InsertMenuItem (SystemMenu, i, TRUE, MENUITEMINFO); //Legge Om bedriften MENUITEMINFO.fMask: = MIIM_TYPE eller MIIM_ID; MENUITEMINFO.fType: = MFT_STRING; MENUITEMINFO.dwTypeData: = PChar (MenuCaption); MENUITEMINFO.cch: = Lengde (MenuCaption); MENUITEMINFO.wID: = 1 101; //ID må være < $ F000 InsertMenuItem (SystemMenu, i + 1, SANN, MENUITEMINFO); end;
prosedyre TForm1.WMSYSCOMMAND (var budskapet: TWMSYSCOMMAND); begynne arvet; Ved message.CmdType av 1101: ShowMessage ('Om meg'); ende; end;
forrige koden ikke legge til et menyelement til systemmenyen til programknappen på oppgavelinjen (når du høyreklikker på den). Det er fordi delphi skaper et skjult vindu. Du må gjøre jobben to ganger for å legge den samme menyen for det vinduet. Dessverre er objektet mottar WM_SYSCOMMAND melding om at vinduet også:
typen TForm1 = klasse (TForm) prosedyre FormCreate (Sender: TObject); private prosedyre OnAppMessage (var Msg: TMsg; Var håndtert: Boolean); end;
...
prosedyre TForm1.FormCreate (Sender: TObject); konst MenuCaption = '& Om ...'; Var i: Integer; SystemMenu: HMenu; MENUITEMINFO: TMENUITEMINFO; begynne Application.OnMessage: = OnAppMessage; SystemMenu: = GetSystemMenu (Application.Handle, False); //Samme kode som før ... end;
prosedyre TForm1.OnAppMessage (var Msg: TMsg; Var håndtert: Boolean); begynne if (Msg.message = WM_SYSCOMMAND) og (Msg.wParam = 1101), og start ShowMessage ('Om meg'); Håndtert: = true; ende; end;



Previous:
Next Page: