この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

CWnd::GetSystemMenu

 

アプリケーションのコピーおよび変更のコントロール メニューにアクセスできます。


      CMenu* GetSystemMenu(
   BOOL bRevert 
) const;

bRevert

実行されるアクションを指定します。 bRevertFALSE場合、GetSystemMenu は、現在使用中のコントロール メニューのコピーのハンドルを返します。 このコピーは、メニュー コントロールとともに同一では変更可能です。 bRevert[真]場合、GetSystemMenu コントロールには既定のメニューをリセットします。 前者は、多くの場合、メニュー コントロール変更してある場合は、破棄されます。 この場合、戻り値は未定義になります。

bRevert がの場合、コントロール FALSEメニューのコピーを識別します。 bRevert[真]の場合、戻り値は未定義です。

返されるポインターは、一時的なポインターです。後で使用するために保存しておくことはできません。

メニュー コントロールの独自のコピーを作成するために GetSystemMenu を使用しないウィンドウには、標準コントロール メニューが表示されます。

GetSystemMenu のメンバー関数が返すポインターが CMenu::AppendMenuCMenu::InsertMenu、または CMenu::ModifyMenu 関数とコントロール メニューを変更するために使用できます。

コントロール メニューは、最初に SC_CLOSESC_MOVESC_SIZEなど、さまざまな ID の値で識別された項目が含まれます。 コントロールのメニュー項目は WM_SYSCOMMAND のメッセージを生成します。 定義済みのすべてのメニュー項目により大きい 0xF000 ID 番号があります。 アプリケーションがコントロールにメニュー項目を追加すると、F000 ほど ID 番号を使用する必要があります。

Windows は標準コントロール メニューの項目を自動的に使用できなくすることがあります。 CWnd を送信 WM_INITMENU のメッセージに応答することによって、メニューが表示される前に、または確保できない独自の選択を実行できます。

使用例

// The following code fragment is taken from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
   CString strAboutMenu;
   strAboutMenu.LoadString(IDS_ABOUT);
   if (!strAboutMenu.IsEmpty())
   {
      pSysMenu->AppendMenu(MF_SEPARATOR);
      pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
   }
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);   // Set big icon
SetIcon(m_hIcon, FALSE);  // Set small icon

必要条件

ヘッダー: afxwin.h

表示: