/trunk/Delphi Code/QuerySystemMenu/QuerySystemMenu.pas |
---|
152,24 → 152,14 |
function TQuerySystemMenu.MsgProc(Handle: HWnd; Msg: UInt; WParam: Windows.WParam; LParam: Windows.LParam): LResult; |
begin |
// TODO bug: löst bei evtl vorhandenen submenus öfters aus |
if Msg = WM_INITMENUPOPUP then |
begin |
// if Cardinal(WParam) = GetSystemMenu(FHandle, False) then |
if LongBool(HiWord(lParam)) then |
begin |
FSystemMenuOpened := true; |
if Assigned(FOnSystemMenuOpen) then |
begin |
FOnSystemMenuOpen(Self); |
end; |
end; |
end; |
{$IFDEF USE_WM_UNINITMENUPOPUP} |
if Msg = WM_UNINITMENUPOPUP then |
{$ELSE} |
if FSystemMenuOpened and (Msg = WM_EXITMENULOOP) then |
// WM_INITMENUPOPUP wird benötigt, falls man z.B. direkt in das |
// MainMenu mit einem Klick wechselt. |
// TODO: Problem, wenn das System-Menu Untermenü-Punkte besitzt? |
if FSystemMenuOpened and ((Msg = WM_EXITMENULOOP) |
or (Msg = WM_INITMENUPOPUP)) then |
{$ENDIF} |
begin |
{$IFDEF USE_WM_UNINITMENUPOPUP} |
187,6 → 177,20 |
{$ENDIF} |
end; |
// TODO bug: löst bei evtl vorhandenen submenus öfters aus |
if Msg = WM_INITMENUPOPUP then |
begin |
// if Cardinal(WParam) = GetSystemMenu(FHandle, False) then |
if LongBool(HiWord(lParam)) then |
begin |
FSystemMenuOpened := true; |
if Assigned(FOnSystemMenuOpen) then |
begin |
FOnSystemMenuOpen(Self); |
end; |
end; |
end; |
result := inherited MsgProc(Handle, Msg, WParam, LParam); |
end; |
/trunk/Delphi Code/QuerySystemMenu/Demo.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/Delphi Code/QuerySystemMenu/Main.pas |
---|
4,7 → 4,7 |
uses |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
Dialogs, StdCtrls, ExtCtrls, QuerySystemMenu; |
Dialogs, StdCtrls, ExtCtrls, QuerySystemMenu, Menus; |
type |
TMainForm = class(TForm) |
11,6 → 11,18 |
CheckBox1: TCheckBox; |
Timer1: TTimer; |
Label1: TLabel; |
MainMenu1: TMainMenu; |
N12231: TMenuItem; |
N123124235425541: TMenuItem; |
N45koiaejfunsdkf1: TMenuItem; |
erlknf1: TMenuItem; |
fkjn1: TMenuItem; |
fe1: TMenuItem; |
flmnakwjfnajwrngl1: TMenuItem; |
ewfkjanwrgboinginrginaikrwngka1: TMenuItem; |
asdasdjknsafjnaskfnakjf1: TMenuItem; |
askfnjakfnkjasndfkjandf1: TMenuItem; |
fkjafnjkasndf1: TMenuItem; |
procedure FormCreate(Sender: TObject); |
procedure FormDestroy(Sender: TObject); |
procedure Timer1Timer(Sender: TObject); |
/trunk/Delphi Code/QuerySystemMenu/Main.dfm |
---|
10,6 → 10,7 |
Font.Height = -11 |
Font.Name = 'Tahoma' |
Font.Style = [] |
Menu = MainMenu1 |
OldCreateOrder = False |
OnCreate = FormCreate |
OnDestroy = FormDestroy |
43,4 → 44,41 |
Left = 400 |
Top = 288 |
end |
object MainMenu1: TMainMenu |
Left = 384 |
Top = 96 |
object N12231: TMenuItem |
Caption = '1223' |
object fe1: TMenuItem |
Caption = 'fe' |
end |
end |
object N123124235425541: TMenuItem |
Caption = 'ewfewekfn' |
object fkjn1: TMenuItem |
Caption = 'fkjn' |
end |
end |
object N45koiaejfunsdkf1: TMenuItem |
Caption = '45koiaejfunsdkf' |
object erlknf1: TMenuItem |
Caption = 'erlknf' |
end |
end |
object flmnakwjfnajwrngl1: TMenuItem |
Caption = 'flmnakwjfnajwrngl ' |
object fkjafnjkasndf1: TMenuItem |
Caption = 'fkjafnjkasndf' |
end |
end |
object ewfkjanwrgboinginrginaikrwngka1: TMenuItem |
Caption = 'k' |
object asdasdjknsafjnaskfnakjf1: TMenuItem |
Caption = 'asdasdjknsafjnaskfnakjf' |
end |
end |
object askfnjakfnkjasndfkjandf1: TMenuItem |
Caption = 'askfnjakfnkjasndfkjandf' |
end |
end |
end |