我这样写为何不行呢?正确的写法应该是怎样的,事件该如何创建?
procedure TForm1.Button2Click(Sender: TObject);
var
menu1:hwnd;
pos:integer;
begin
menu1:=createmenu();
pos:=getmenuitemcount(menu1)+1;
appendmenu(menu1,MF_BYPOSITION,pos,'testmenu');
drawmenubar(menu1);
mainmenu1:=tmainmenu(menu1);
Repaint;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
menu1:hwnd;
pos:integer;
begin
menu1:=createmenu();
pos:=getmenuitemcount(menu1)+1;
appendmenu(menu1,MF_BYPOSITION,pos,'testmenu');
drawmenubar(menu1);
mainmenu1:=tmainmenu(menu1);
Repaint;
end;
解决方案 »
- ExitCode有什么用?
- 请教关于treeView的一个小问题,节点赋值id,显示text,如何取这个id
- olecontainer.creatobject();
- 请教一个简单的问题
- 怎么样让delphi自动生成的*.~pas,*.~dfm等文件不出现,或者放到另外的目录下?
- 如何让TPanel透明
- delphi6.0或5.0,甚至4.0的控件能否在7.0中使用?
- 如何定义全局变量啊???为什么我定义后不起作用呢?
- 大家好,请教一个简单问题。不要笑我。:(
- 为什么DELPHI的应用似乎比不过PB?(招聘PB程序员较DELPHI多)
- delphi 一问
- 用Ctrl+Alt+Del关闭的程序关闭时会触发什么事件?
var
menu1:hwnd;
pos:integer;
begin
menu1:=createmenu();
pos:=getmenuitemcount(menu1)+1;
appendmenu(menu1,MF_BYPOSITION,pos,'testmenu');
SetMenu(handle, menu1);
end;
可以说说事件该如何创建?
procedure Tfunc.AppendToSystemMenu(Form:TForm;Item:string;ItemID:word);
var NormalSysMenu,MinimizedMenu:HMenu;
AItem:Array[0..255] of Char;
PItem:PChar;
begin
NormalSysMenu:=GetSystemMenu(Form.Handle,False);
MinimizedMenu:=GetSystemMenu(Application.Handle,False);
if Item='-' then
begin
AppendMenu(NormalSysMenu,MF_SEPARATOR,0,nil);
AppendMenu(MinimizedMenu,MF_SEPARATOR,0,nil);
end
else
begin
PItem:=StrPCopy(@AItem,Item);
AppendMenu(NormalSysMenu,MF_STRING,ItemID,PItem);
AppendMenu(MinimizedMenu,MF_STRING,ItemID,PItem);
end;
end;
*************************
在主窗体中
//系统菜单的消息响应,一般加在要使用的窗体里面
procedure Tfunc.RegisterMsg(var Msg:TMsg;var Handled:Boolean);
begin
if Msg.message=WM_SYSCOMMAND then
if Msg.wParam=99 then
ShellExecute(Handle,'open',PChar('http://boyzxd.myrice.com'),nil,nil,SW_SHOW);
end;
在form.onshow里
//添加系统菜单
func.AppendToSystemMenu(main,'-',98);
func.AppendToSystemMenu(main,'查看注册码(&R)',99);
func.AppendToSystemMenu(main,'关于(&A)',100);
Application.OnMessage:=RegisterMsg;应该有点帮助吧?
为何要添加两次呢?
AppendMenu(NormalSysMenu,MF_STRING,ItemID,PItem);
AppendMenu(MinimizedMenu,MF_STRING,ItemID,PItem);
两个的作用是什么?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure WMCommand(var Msg: TWMCommand); message WM_COMMAND;
procedure MenuClick;
public
{ Public declarations }
end;var
Form1: TForm1;
pos:integer;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
menu1:hwnd;
begin
menu1:=createmenu();
pos:=getmenuitemcount(menu1)+1;
appendmenu(menu1,MF_BYPOSITION,pos,'testmenu');
SetMenu(handle, menu1);
end;procedure TForm1.MenuClick;
begin
ShowMessage('Clicked');
end;procedure TForm1.WMCommand(var Msg: TWMCommand);
begin
inherited;
if Msg.ItemID = pos then
MenuClick;end;end.
和缩小到任务栏时候的呀