procedure TForm1.btn1Click(Sender: TObject);
var
pc :TPoint;
begin
SetForegroundWindow(Handle) ;
pc :=Btn1.ClientToScreen(Point(0, 0)) ;
TrackPopupMenu(PM1.Handle,TPM_BOTTOMALIGN,pc.X, pc.Y,0,Handle,nil);
PostMessage(Handle, WM_NULL, 0, 0);
end;//以下2个过程没有执行啊--------------------------------procedure TForm1.N3Click(Sender: TObject);
begin
ShowMessage('ok');
end;procedure TForm1.N1Click(Sender: TObject);
begin
close;
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls;type
TForm1 = class(TForm)
Btn1: TButton;
procedure Btn1Click(Sender: TObject);
protected
procedure WMCommand(var Msg: TWMCommand); message WM_COMMAND;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMCommand(var Msg: TWMCommand);
begin
case Msg.ItemID of
101 : ShowMessage('ok');
102 : Close;
end;
inherited;
end;procedure TForm1.Btn1Click(Sender: TObject);
var
hPopMenu : HMENU;
begin
hPopMenu := CreatePopupMenu;
AppendMenu(hPopMenu, MF_STRING, 101, '关于');
AppendMenu(hPopMenu, MF_SEPARATOR, 0, nil);
AppendMenu(hPopMenu, MF_STRING, 102, '退出');
TrackPopupMenu(hPopMenu, TPM_BOTTOMALIGN,
TControl(btn1).ClientOrigin.X,
TControl(btn1).ClientOrigin.Y,
0,Handle,nil);
PostMessage(Handle, WM_COMMAND, 0, 0);
DestroyMenu(hPopMenu);
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls;type
TForm1 = class(TForm)
Btn1: TButton;
procedure Btn1Click(Sender: TObject);
protected
procedure WMCommand(var Msg: TWMCommand); message WM_COMMAND;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMCommand(var Msg: TWMCommand);
begin
case Msg.ItemID of
101 : ShowMessage('ok');
102 : Close;
end;
inherited;
end;procedure TForm1.Btn1Click(Sender: TObject);
var
hPopMenu : HMENU;
sPopMenu : HMENU;
mii : TMENUITEMINFO;
begin
hPopMenu := CreatePopupMenu;
sPopMenu := CreatePopupMenu;
mii.fMask := MIIM_SUBMENU or MIIM_STRING;
mii.dwTypeData := '关于';
mii.cbSize := sizeof(TMENUITEMINFO);
mii.hSubMenu := sPopMenu;
InsertMenuItem(hPopMenu, 0, true, mii);
AppendMenu(sPopMenu, MF_STRING, 101, '显示');
AppendMenu(hPopMenu, MF_SEPARATOR, 0, nil);
AppendMenu(hPopMenu, MF_STRING, 102, '退出');
TrackPopupMenu(hPopMenu, TPM_BOTTOMALIGN,
TControl(btn1).ClientOrigin.X,
TControl(btn1).ClientOrigin.Y,
0,Handle,nil);
DestroyMenu(hPopMenu);
DestroyMenu(sPopMenu);
end;end.