我这样写为何不行呢?正确的写法应该是怎样的,事件该如何创建?
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;

解决方案 »

  1.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
      menu1:hwnd;
      pos:integer;
    begin
      menu1:=createmenu();
      pos:=getmenuitemcount(menu1)+1;
      appendmenu(menu1,MF_BYPOSITION,pos,'testmenu');
      SetMenu(handle, menu1);  
    end;
      

  2.   

    谢谢zwjchina(蒲石),等了一天终于有人回答了。
    可以说说事件该如何创建?
      

  3.   

    送你一个添加系统菜单的//添加系统菜单
    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;应该有点帮助吧?
      

  4.   

    to cornermoss(角落的青苔:射手无弓?你混得太糗了吧~)
    为何要添加两次呢?
          AppendMenu(NormalSysMenu,MF_STRING,ItemID,PItem);
          AppendMenu(MinimizedMenu,MF_STRING,ItemID,PItem);
    两个的作用是什么?
      

  5.   

    unit Unit1;interfaceuses
      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.
      

  6.   

    to lzf1010(深宇):NormalSysMenu和MinimizedMenu分别对应程序在正常状态
    和缩小到任务栏时候的呀