Метод IContextMenuSite::D oContextMenuPopup (shobjidl_core.h)
[DoContextMenuPopup больше недоступен для использования с Windows Server 2003.]
Создает и отображает контекстное меню, отслеживает выбор элементов в этом меню и вызывает выбранную команду.
Синтаксис
HRESULT DoContextMenuPopup(
[in] IUnknown *punkContextMenu,
[in] UINT fFlags,
[in] POINT pt
);
Параметры
[in] punkContextMenu
Тип: IUnknown*
Указатель на реализацию IUnknown контекстного меню.
[in] fFlags
Тип: UINT
Необязательные флаги, указывающие способ изменения контекстного меню. Для этого параметра можно задать любое сочетание следующих значений. Остальные биты нижнего порядка слова резервируются системой. Слово высокого порядка можно использовать для обмена данными, зависящими от контекста. Значение CMF_RESERVED можно использовать для маскировки слова нижнего порядка.
CMF_NORMAL (0x00000000)
0x00000000. Указывает на нормальную работу. Расширение контекстного меню, расширение пространства имен или обработчик перетаскивания могут добавлять все элементы меню.
CMF_DEFAULTONLY (0x00000001)
0x00000001. Этот флаг устанавливается, когда пользователь активизирует действие по умолчанию, обычно путем двойного щелчка. Этот флаг предоставляет указание для расширения контекстного меню ничего не добавлять, если он не изменяет элемент по умолчанию в меню. Расширение контекстного меню или обработчик перетаскивания не должны добавлять элементы меню, если указано это значение. Расширение пространства имен должно добавлять только элемент по умолчанию (при наличии).
CMF_VERBSONLY (0x00000002)
0x00000002. Этот флаг устанавливается, если контекстное меню предназначено для объекта ярлыка. Обработчики контекстного меню должны игнорировать это значение.
CMF_EXPLORE (0x00000004)
0x00000004. Этот флаг устанавливается при наличии окна дерева Обозреватель Windows.
CMF_NOVERBS (0x00000008)
0x00000008. Этот флаг устанавливается для элементов, отображаемых в меню "Отправить ". Обработчики контекстного меню должны игнорировать это значение.
CMF_CANRENAME (0x00000010)
0x00000010. Этот флаг устанавливается, если вызывающее приложение поддерживает переименование элементов. Расширение контекстного меню или обработчик перетаскивания должны игнорировать этот флаг. Расширение пространства имен должно добавить элемент переименования в меню, если применимо.
CMF_NODEFAULT (0x00000020)
0x00000020. Этот флаг устанавливается, если ни один элемент в меню не был установлен в качестве элемента по умолчанию. Обработчик перетаскивания должен игнорировать этот флаг. Расширение пространства имен не должно присваивать ни одному из пунктов меню значение по умолчанию.
CMF_INCLUDESTATIC (0x00000040)
Это значение недоступно.
Windows Server 2003 и Windows XP: 0x00000040. Этот флаг устанавливается при создании статического меню. Только браузер должен использовать этот флаг. Все остальные расширения контекстного меню должны игнорировать этот флаг.
CMF_ITEMMENU (0x00000080)
0x00000080. Этот флаг устанавливается, когда вызывающее приложение вызывает контекстное меню для элемента в представлении (в отличие от фона представления).
Windows Server 2003 и Windows XP: Это значение недоступно.
CMF_EXTENDEDVERBS (0x00000100)
0x00000100. Этот флаг устанавливается, когда вызывающему приложению требуется расширенные команды. Обычные команды отображаются, когда пользователь щелкает объект правой кнопкой мыши. Чтобы отобразить расширенные команды, пользователь должен щелкнуть правой кнопкой мыши при нажатии клавиши SHIFT.
CMF_DISABLEDVERBS (0x00000200)
0x00000200. Этот флаг устанавливается, когда вызывающее приложение намерено вызывать команды, которые в противном случае отключены, например устаревшие меню.
Windows Server 2003 и Windows XP: Это значение недоступно.
CMF_ASYNCVERBSTATE (0x00000400)
0x00000400. Этот флаг устанавливается, если состояние команды можно вычислять асинхронно.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение недоступно.
CMF_OPTIMIZEFORINVOKE (0x00000800)
0x00000800. Сообщает обработчикам контекстного меню, которые не поддерживают вызов команды через каноническое имя команды, чтобы обойти обработку в реализации IContextMenu::QueryContextMenu .
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение недоступно.
CMF_SYNCCASCADEMENU (0x00001000)
0x00001000.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение недоступно.
CMF_DONOTPICKDEFAULT (0x00002000)
0x00001000. Если команда явно не указана, не используйте вместо нее команду по умолчанию.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение недоступно.
CMF_RESERVED (0xffff0000)
0xffff0000. Этот флаг представляет собой битовую маску, указывающую все биты, которые не следует использовать. Он должен использоваться только в качестве маски. Не передайте его в качестве значения параметра.
[in] pt
Тип: POINT
Расположение, в котором будет отображаться контекстное меню. Эта точка указывает расположение левого верхнего угла меню в координатах экрана.
Возвращаемое значение
Тип: HRESULT
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Ни одна версия не поддерживается |
Целевая платформа | Windows |
Header | shobjidl_core.h (включая Shobjidl.h) |
DLL | Shell32.dll (версия 5.0 или более поздняя) |