次の方法で共有


CMenu::AppendMenu

更新 : 2007 年 11 月

メニューの最後に新しい項目を追加します。

BOOL AppendMenu(
   UINT nFlags,
   UINT_PTR nIDNewItem = 0,
   LPCTSTR lpszNewItem = NULL 
);
BOOL AppendMenu(
   UINT nFlags,
   UINT_PTR nIDNewItem,
   const CBitmap* pBmp 
);

パラメータ

  • nFlags
    メニューに追加するときの、新しいメニュー項目の状態についての情報を指定します。「解説」に示す値を 1 つ以上指定します。

  • nIDNewItem
    新しいメニュー項目のコマンド ID を指定します。nFlags の設定が MF_POPUP になっているときは、ポップアップ メニューのメニュー ハンドル (HMENU) を指定します。nFlags が MF_SEPARATOR に設定されているときは、パラメータ nIDNewItem は無視されます (必要ありません)。

  • lpszNewItem
    新しいメニュー項目の内容を指定します。nFlags の設定に従って、lpszNewItem は、次のように解釈されます。

    nFlags

    lpszNewItem の解釈

    MF_OWNERDRAW

    アプリケーション提供の 32 ビットの値を保持します。この値は、アプリケーションがそのメニュー項目に割り当てる付加的なデータを管理するために使います。この 32 ビットの値は、アプリケーションが WM_MEASUREITEM メッセージと WM_DRAWITEM メッセージを処理するときに使われます。この値は、これらのメッセージで提供される構造体の itemData メンバに格納されます。

    MF_STRING

    NULL で終わる文字列へのポインタを保持します。これは既定です。

    MF_SEPARATOR

    パラメータ lpszNewItem は無視されます (必要ありません)。

  • pBmp
    メニュー項目として使用される CBitmap オブジェクトへのポインタ。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

nFlags に値を設定することにより、アプリケーションのメニュー項目の状態を指定できます。nIDNewItem がポップアップ メニューを示しているときは、そのポップ アップ メニューは、追加されるメニューの一部になります。該当のメニューが破棄されたときは、追加されたメニューも破棄されます。追加されたメニューは、矛盾が起きないように CMenu オブジェクトから切り離します。MF_STRINGMF_OWNERDRAW は、AppendMenu のビットマップ バージョンでは有効ではないことに注意してください。

nFlags に設定できる値の一覧を示します。

  • MF_CHECKED   MF_UNCHECKED とトグルで動作します。既定のチェック マークを項目の隣に付けます。アプリケーションがチェック マークのビットマップを用意しているときは (「CMenu::SetMenuItemBitmaps」を参照)、その "チェック マーク付き" のビットマップが表示されます。

  • MF_UNCHECKED   MF_CHECKED とトグルで動作します。項目の隣からチェック マークを削除します。アプリケーションがチェック マークのビットマップを用意しているときは (「SetMenuItemBitmaps」を参照)、その "チェック マークなし" のビットマップが表示されます。

  • MF_DISABLED   メニュー項目を選択できないようにしますが、淡色表示にはしません。

  • MF_ENABLED   メニュー項目を選択できるようにして、淡色表示から元の表示に戻します。

  • MF_GRAYED   メニュー項目を選択できないようにして、淡色表示にします。

  • MF_MENUBARBREAK   スタティック メニューの新しい行、またはポップアップ メニューの新しい桁位置に項目を置きます。ポップアップ メニューの新しい桁位置と古い桁位置を縦線で分けます。

  • MF_MENUBREAK   スタティック メニューの新しい行、またはポップアップ メニューの新しい桁位置に項目を置きます。桁位置の間には分割線は描かれません。

  • MF_OWNERDRAW   項目がオーナー描画項目であることを指定します。メニューが最初に表示されるとき、そのメニューを所有するウィンドウは、メニュー項目の高さと幅を取得するために、WM_MEASUREITEM メッセージを受け取ります。その後、そのメニュー項目の表示を更新しなければならなくなるたびに、WM_DRAWITEM メッセージを受け取ります。このオプションはトップレベル メニュー項目では有効ではありません。

  • MF_POPUP   メニュー項目が、関連するポップアップ メニューを持つことを示します。パラメータの ID には、その項目に関連するポップアップ メニューのハンドルを指定します。これは、トップレベルのポップアップ メニューか階層化されたポップアップ メニューのいずれかをポップアップ メニュー項目に追加するために使われます。

  • MF_SEPARATOR   水平の区切り線を描画します。ポップアップ メニューのみで使用できます。この線を淡色表示、使用禁止、または強調表示にすることはできません。ほかのパラメータは無視されます。

  • MF_STRING   メニュー項目が文字列であることを示します。

次のフラグの組み合わせは、互いに排他的で同時に使うことはできません。

  • MF_DISABLEDMF_ENABLED、および MF_GRAYED

  • MF_STRINGMF_OWNERDRAWMF_SEPARATOR とビットマップ バージョン

  • MF_MENUBARBREAKMF_MENUBREAK

  • MF_CHECKEDMF_UNCHECKED

ウィンドウのメニューが更新されたときは (ウィンドウが表示されているかどうかにかかわらず)、アプリケーションは CWnd::DrawMenuBar 関数を必ず呼び出します。

使用例

CMenu::CreateMenu」の例を参照してください。

必要条件

ヘッダー : afxwin.h

参照

参照

CMenu クラス

階層図

CWnd::DrawMenuBar

CMenu::InsertMenu

CMenu::RemoveMenu

CMenu::SetMenuItemBitmaps

CMenu::Detach

AppendMenu

その他の技術情報

CMenu のメンバ