博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Delphi操作系统菜单

Posted on 2011-04-19 16:51  wlmbz  阅读(330)  评论(0编辑  收藏  举报
1 unit Unit1;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, Menus;
8
9 type
10 TForm1 =class(TForm)
11 ButtonAddMenu: TButton;
12 ButtonResetMenu: TButton;
13 ButtonDeleteMenu: TButton;
14 procedure ButtonAddMenuClick(Sender: TObject);
15 procedure ButtonResetMenuClick(Sender: TObject);
16 procedure ButtonDeleteMenuClick(Sender: TObject);
17 private
18 procedure WndProc(var Message: TMessage); override;
19 procedure proc(varmessage : TWMSyscommand); message WM_SYSCOMMAND;
20 { Private declarations }
21 public
22 { Public declarations }
23 end;
24
25 var
26 Form1: TForm1;
27
28 implementation
29
30 {$R *.dfm}
31
32 procedure TForm1.WndProc(var Message: TMessage);
33 begin{捕获菜单点击消息(方法一)}
34 if (message.Msg = WM_SYSCOMMAND) and (message.WParam =15) then
35 begin
36 MessageBox(Handle,'Hello_0!','About',0);
37 end;
38 inherited WndProc(message);
39 end;
40
41
42 procedure TForm1.proc(varmessage : TWMSyscommand);
43 begin{捕获菜单点击消息(方法二)}
44 ifmessage.CmdType =15then
45 MessageBox(Handle,'Hello_1!','About',0);
46 inherited;
47 end;
48
49 procedure TForm1.ButtonAddMenuClick(Sender: TObject);
50 begin
51 {在系统菜单上添加一个分割线}
52 AppendMenu(GetSystemMenu(Handle,false),MF_SEPARATOR,0,'');
53 {在系统菜单上添加一个菜单项}
54 AppendMenu(GetSystemMenu(Handle,false),MF_STRING,15,'[&A]bout'); {15 是 菜单ID}
55 end;
56
57 procedure TForm1.ButtonResetMenuClick(Sender: TObject);
58 begin
59 {重置系统菜单}
60 GetSystemMenu(Handle,True);
61 end;
62
63 procedure TForm1.ButtonDeleteMenuClick(Sender: TObject);
64 begin
65 {(方法一)从系统菜单,根据ID删除菜单项}
66 DeleteMenu(GetSystemMenu(Handle,false),15,MF_BYCOMMAND);
67 {(方法二)从系统菜单,根据位置删除菜单项(最上面第一个是0的菜单项开始,分割线也算一个)}
68 {DeleteMenu(GetSystemMenu(Handle,false),7,MF_BYPOSITION);}
69 {刷新系统菜单}
70 DrawMenuBar(GetSystemMenu(Handle,false));
71 end;
72
73 end.