お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"SystemCommandの設定"





システムコマンドに独自のものを設定する方法です。
Form上とTaskBar上では設定方法が異なります。
TaskBar上のMenuハンドルは、Applicationが持っている点に注意
WinAPIのGetSystemMenuは、Menuハンドルを返しますので、InsertMenu、ModifyMenu等
のAPIでMenu項目を編集することでコマンドが編集されます。

Menu選択時のメッセージをトラップするためには、ApplicationのOnMessageイベントを
定義すればよい

type
  TForm4 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
    procedure AppMsg(var Msg: TMsg; var Handled: Boolean);
  public
    { Public 宣言 }
  end;

var
  Form4: TForm4;

implementation

{$R *.DFM}
Const
  Menu_ID = 10;   {追加メニューのメニューID}

procedure TForm4.AppMsg(var Msg: TMsg; var Handled: Boolean);
begin
     If Msg.wParam = Menu_ID Then begin
        {項目1をクリックした時の処理}
        Application.MessageBox('OK','',0);
        Handled:=True;
     end;
end;

procedure TForm4.FormCreate(Sender: TObject);
var
     Mn : HMenu;
begin
    Application.OnMessage:=AppMsg;

     Mn := GetSystemMenu(Handle,False);
     If Not AppendMenu(Mn,MF_STRING,Menu_ID,'項目1') Then
        ShowMessage('Error');

     Mn := GetSystemMenu(Application.Handle,False);
     If Not AppendMenu(Mn,MF_STRING,Menu_ID,'項目1') Then
        ShowMessage('Error');
end;

Original document by RIN             氏 ID:(ZVQ05076)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum