CWnd::GetSystemMenu

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

CMenu* GetSystemMenu(
   BOOL bRevert 
) const;

パラメーター

  • bRevert
    実行されるアクションを指定します。bRevert が FALSE場合、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

参照

関連項目

CWnd クラス

階層図

CMenu::AppendMenu

CMenu::InsertMenu

CMenu::ModifyMenu

GetSystemMenu