CWnd::GetSystemMenu
アプリケーションのコピーおよび変更のコントロール メニューにアクセスできます。
CMenu* GetSystemMenu(
BOOL bRevert
) const;
パラメーター
- bRevert
実行されるアクションを指定します。 bRevert が FALSE場合、GetSystemMenu は、現在使用中のコントロール メニューのコピーのハンドルを返します。 このコピーは、メニュー コントロールとともに同一では変更可能です。 bRevert が **[真]**場合、GetSystemMenu コントロールには既定のメニューをリセットします。 前者は、多くの場合、メニュー コントロール変更してある場合は、破棄されます。 この場合、戻り値は未定義になります。
戻り値
bRevert がの場合、コントロール FALSEメニューのコピーを識別します。 bRevert が **[真]**の場合、戻り値は未定義です。
返されるポインターは、一時的なポインターです。後で使用するために保存しておくことはできません。
解説
メニュー コントロールの独自のコピーを作成するために GetSystemMenu を使用しないウィンドウには、標準コントロール メニューが表示されます。
GetSystemMenu のメンバー関数が返すポインターが CMenu::AppendMenu、CMenu::InsertMenu、または CMenu::ModifyMenu 関数とコントロール メニューを変更するために使用できます。
コントロール メニューは、最初に SC_CLOSE、SC_MOVEと SC_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