次の方法で共有


CMenu::SetMenuItemBitmaps

更新 : 2007 年 11 月

指定されたビットマップをメニュー項目に関連付けます。

BOOL SetMenuItemBitmaps(
   UINT nPosition,
   UINT nFlags,
   const CBitmap* pBmpUnchecked,
   const CBitmap* pBmpChecked 
);

パラメータ

  • nPosition
    変更されるメニュー項目を指定します。nPosition の解釈は、次に挙げる nFlags の設定により決まります。

    nFlags

    nPosition の解釈

    MF_BYCOMMAND

    パラメータを既存のメニュー項目のコマンド ID で指定することを示します。MF_BYCOMMANDMF_BYPOSITION がどちらも設定されていないときの既定の設定になります。

    MF_BYPOSITION

    パラメータを既存のメニュー項目の位置で指定することを示します。最初の項目位置は 0 です。

  • nFlags
    nPosition の解釈の方法を指定します。

  • pBmpUnchecked
    メニュー項目がチェックされないときに使うビットマップを指定します。

  • pBmpChecked
    メニュー項目がチェックされているときに使うビットマップを指定します。

戻り値

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

解説

メニュー項目がチェックされているかいないかに応じて、Windows は適切なビットマップをメニュー項目の隣に表示します。

pBmpUnchecked または pBmpChecked のいずれかが NULL のときは、Windows はメニュー項目の隣に相当する属性を表示しません。パラメータが両方ともに NULL のときは、Windows は項目をチェックするときに既定のチェック マークを使い、チェックを解除するときにチェック マークを削除します。

メニューが破棄されるときにも、これらのビットマップは破棄されません。ビットマップはアプリケーションの責任で破棄する必要があります。

Windows の GetMenuCheckMarkDimensions 関数は、既定のチェック マークのサイズを取得します。アプリケーションは、この関数に渡すビットマップの適正なサイズを決定するために、この値を使います。サイズを取得し、ビットマップを作成してから、値を設定してください。

使用例

// The code fragment below is from CMainFrame::OnCreate and shows 
// how to associate bitmaps with the "Bitmap" menu item. 
// Whether the "Bitmap" menu item is checked or unchecked, Windows 
// displays the appropriate bitmap next to the menu item. Both 
// IDB_CHECKBITMAP and IDB_UNCHECKBITMAP bitmaps are loaded 
// in OnCreate() and destroyed in the destructor of CMainFrame class. 
// CMainFrame is a CFrameWnd-derived class.

// Load bitmaps from resource. Both m_CheckBitmap and m_UnCheckBitmap
// are member variables of CMainFrame class of type CBitmap.
ASSERT(m_CheckBitmap.LoadBitmap(IDB_CHECKBITMAP));
ASSERT(m_UnCheckBitmap.LoadBitmap(IDB_UNCHECKBITMAP));

// Associate bitmaps with the "Bitmap" menu item. 
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(4);
ASSERT(submenu->SetMenuItemBitmaps(ID_MENU_BITMAP, MF_BYCOMMAND, 
   &m_CheckBitmap, &m_UnCheckBitmap));
// This code fragment is taken from CMainFrame::~CMainFrame

// Destroy the bitmap objects if they are loaded successfully 
// in OnCreate().
if (m_CheckBitmap.m_hObject)
   m_CheckBitmap.DeleteObject();

if (m_UnCheckBitmap.m_hObject)
   m_UnCheckBitmap.DeleteObject();

必要条件

ヘッダー : afxwin.h

参照

参照

CMenu クラス

階層図

GetMenuCheckMarkDimensions

SetMenuItemBitmaps

その他の技術情報

CMenu のメンバ