プラットフォーム SDK
GetSystemMenu

ウィンドウメニュー(システムメニューまたはコントロールメニューとも呼ばれる)のハンドルを取得します。このハンドルはコピーであり、ウィンドウメニューの変更に利用できます。ウィンドウメニューを既定の状態へ戻すこともできます

HMENU GetSystemMenu(
  HWND hWnd,    // ウィンドウのハンドル
  BOOL bRevert  // 元へ戻すかどうか
);

パラメータ

hWnd
ウィンドウメニューを保持しているウィンドウのハンドルを指定します。
bRevert
関数の動作を指定します。FALSE(0)を指定すると、この関数は、現在使用中のウィンドウメニューをコピーして、コピー先のメニューハンドルを返します。返されたメニューハンドルは、指定されたウィンドウのウィンドウメニューと同じものですが、その後、変更を加えることができます。

TRUE を指定すると、この関数は、ウィンドウメニューをリセットして Windows の既定の状態へ戻します。つまり、ウィンドウメニューがカスタマイズされていた場合、カスタマイズを取り消します。以前の(カスタマイズ済みの)ウィンドウメニューが存在する場合、そのウィンドウメニューを破棄します。

戻り値

bRevert パラメータが FALSE の場合、ウィンドウメニューが内部でコピーされ、コピー先のメニューハンドルが返ります。bRevert パラメータが TRUE の場合、NULL が返ります。

解説

任意のウィンドウは bRevert パラメータで FALSE を指定して GetSystemMenu 関数を使うと、他のウィンドウのウィンドウメニュー(通常は Windows の標準的なウィンドウメニュー)を取得できます。その後、そのウィンドウメニューをカスタマイズできます。このような取得とカスタマイズを行っていないウィンドウは、標準的なウィンドウメニューを受け取ります。

既定のウィンドウメニューはいくつかのメニュー項目を保持しています。これらのメニュー項目には、SC_CLOSE、SC_MOVE、SC_SIZE などの識別子が割り当てられています。詳細については、MSDN ライブラリの「Win32 Hooks」を参照してください。

ユーザーがウィンドウメニューのメニュー項目を選択すると、これらのメニュー項目は、 メッセージを送信します。

ウィンドウメニューの既定のメニュー項目には、0xF000 より大きい識別子番号が割り当てられています。アプリケーションがウィンドウメニューにカスタムのメニュー項目を追加する場合、0xF000 未満の識別子番号を使うべきです。

状況によって、システムはウィンドウメニューの標準的なメニュー項目の一部を自動的に淡色表示にします。アプリケーションは、どのメニューも表示されていないうちに メッセージに応答することにより、メニュー項目を独自に選択したり淡色表示にすることができます。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用

参照

GetMenu, InsertMenuItem, SetMenuItemInfo, ,

Page view tracker