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_BYCOMMAND と MF_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