Шаг 879 - CMenu::SetMenuItemBitmaps

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

Возвращаемое значение
Отлично от нуля, если функция успешна, иначе 0.

Параметры
nPosition
Определяет пункт меню, который будет изменен. nFlags параметр может использоваться, чтобы интерпретировать nPosition следующими способами:

nFlags
Определяет, как nPosition интерпретируется.
pBmpUnchecked
Определяет точечный рисунок, чтобы использовать для пунктов меню, которые установлены.
pBmpChecked
Определяет точечный рисунок, чтобы использовать для пунктов меню, которые не установлены.

Замечания
Сопоставляет определенные точечные рисунки с пунктом меню. Выбран ли пункт меню или без выбора, Windows отображает соответствующий точечный рисунок рядом с пунктом меню.
Если или pBmpUnchecked или pBmpChecked NULL, то Windows не отображает ничто рядом с пунктом меню для соответствующего атрибута. Если оба параметра NULL, Windows использует заданную по умолчанию галочку, когда элемент выбран и удаляет галочку, когда элемент без выбора.
Когда меню разрушено, эти точечные рисунки не разрушены, прикладная программа должна уничтожить их.
Функция Windows GetMenuCheckMarkDimensions получает размерности заданной по умолчанию галочки, используемой для пунктов меню. Прикладная программа использует эти значения, чтобы определить соответствующий размер для точечных рисунков, обеспеченных этой функцией. Получите размер, создайте ваши точечные рисунки, затем установите их.

Пример

// Код  ниже показывает, как сопоставить точечные рисунки с 
// пунктом меню "Test". Выбран ли пункт меню "Test" или 
// не выбран, Windows отображает соответствующий точечный рисунок рядом с меню 
// IDB_CHECKBITMAP и IDB_UNCHECKBITMAP точечные рисунки загруженны 
// В OnCreate () и разрушенный в деструктору класса CMainFrame. 
// CMainFrame - класс наследник CFrameWnd.

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	// Загрузить точечные рисунки из ресурса.  m_CheckBitmap и m_UnCheckBitmap
	// являются полями класса CMainFrame типа CBitmap.

	ASSERT(m_CheckBitmap.LoadBitmap(IDB_CHECKBITMAP));
	ASSERT(m_UnCheckBitmap.LoadBitmap(IDB_UNCHECKBITMAP));

	// Точечные рисунки Ассоциации с пунктом меню "Test". 
	CMenu* mmenu = GetMenu();
	CMenu* submenu = mmenu->GetSubMenu(3);
	ASSERT(submenu->SetMenuItemBitmaps(ID_HELP_TEST, MF_BYCOMMAND, 
	&m_CheckBitmap, &m_UnCheckBitmap));

	// ...
}

CMainFrame::~CMainFrame()
{
	// Уничтожить растровые объекты, если они загружены успешно 
	// В OnCreate ().
	if (m_CheckBitmap.m_hObject)
		m_CheckBitmap.DeleteObject();

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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 9.02.2002