Шаг 588 - 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 - класс унаследованный  CMainFrame.

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();
}

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