BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );
Возвращаемое значение
Отлично от нуля если функция успешна, иначе 0.
Параметры
nFlags
Определяет информацию относительно состояния нового пункта меню когда он добавлен к меню. Это состоит из одного или большее количество значений перечисленных в разделе Замечаний.
nIDNewItem
Определяет команду ID нового пункта меню, а если nFlags установлен к MF_POPUP дескриптор (HMENU) всплывающего меню. nIDNewItem параметр игнорируется если nFlags установлен к MF_SEPARATOR.
lpszNewItem
Определяет содержание нового пункта меню. nFlags параметр используется чтобы интерпретировать lpszNewItem следующим способом:
- MF_OWNERDRAW - Содержит обеспеченное прикладная программой 32-разрядное значение, что прикладная программа может использовать дополнительные данные, связанные с пунктом меню. Это 32-разрядное значение доступно прикладной программе, когда она обрабатывает WM_MEASUREITEM и WM_DRAWITEM сообщения. Значение сохранено в itemData члене структуры, обеспеченной теми сообщениями.
- MF_STRING - Содержит указатель на строку с нулевым символом в конце. Это - заданная по умолчанию интерпретация.
- MF_SEPARATOR - lpszNewItem параметр игнорируется.
pBmp
Указатель на объект CBitmap, который будет использоваться как пункт меню.
Замечания
Добавляет новый элемент в конец меню. Прикладная программа может определять состояние пункта меню, устанавливая значения в nFlags. Когда nIDNewItem определяет всплывающее это становится частью меню, для которого это добавлено. Если то меню разрушено, добавленное меню будет также разрушено. Добавленное меню должно отсоединиться из объекта CMenu чтобы избежать конфликта. Обратите внимание, что MF_STRING и MF_OWNERDRAW не допустим для растровой версии AppendMenu.
Следующий список описывает флажки, которые могут быть установлены в nFlags:
- MF_CHECKED - Действует как переключатель с MF_UNCHECKED, чтобы поместить заданную по умолчанию галочку рядом с элементом. когда прикладная программа обеспечивает точечные рисунки галочки (см. SetMenuItemBitmaps функцию).
- MF_UNCHECKED - Действует как переключатель с MF_CHECKED, чтобы удалить галочку рядом с элементом.
- MF_DISABLED - Отключает пункт меню так, чтобы он не мог быть выбран, но не тускнеет.
- MF_ENABLED - Разрушает пункту меню так, чтобы это могло быть выбрано и восстановлено из недоступного состояния.
- MF_GRAYED - Отключает пункт меню так, чтобы он не могло быть выбран и потускнел.
- MF_MENUBARBREAK - Помещает элемент в новую строку в статических меню или в новом столбце в всплывающем меню. Новый столбец всплывающего меню будет отделяться от старого столбца вертикальной разделительной линией.
- MF_MENUBREAK - Помещает элемент в новую строку в статических меню или в новом столбце в всплывающем меню. Никакая разделительная линия не помещена между столбцами.
- MF_OWNERDRAW - Определяет, что элемент - владелец - выводящийся элемент. Когда меню отображается впервые, окно, которое обладает меню, получает WM_MEASUREITEM сообщение, которое получает высоту и ширину пункта меню. WM_DRAWITEM сообщение - то посланное всякий раз, когда владелец должен модифицировать визуальное появление пункта меню. Эта опция не допустима для верхнего уровня пункта меню.
- MF_POPUP - Определяет что пункт меню имеет всплывающее меню связанное с ним. Параметр ID определяет дескриптор к всплывающему меню которое должно быть связано с элементом. Это используется для добавления верхнего уровня всплывающего меню или иерархического всплывающего меню для пункта всплывающего меню.
- MF_SEPARATOR - Выводит горизонтальную разделительную линию. Может только использоваться в всплывающем меню. Эта строка не может быть недоступна, заблокирован, или высвечен. Другие параметры игнорируются.
- MF_STRING - Определяет, что пункт меню - символьная строка.
Каждая из следующих групп вносит в список флажки, которые являются взаимно исключительными, и не могут использоваться вместе:
MF_DISABLED, MF_ENABLED, и MF_GRAYED
MF_STRING, MF_OWNERDRAW, MF_SEPARATOR, и растровая версия
MF_MENUBARBREAK и MF_MENUBREAK
MF_CHECKED и MF_UNCHECKED
Всякий раз, когда меню, которое постоянно находится в окне, изменено (отображается или нет в окне) прикладная программа должна вызвать CWnd::DrawMenuBar.