使用英语阅读

通过


IContextMenuSite::D oContextMenuPopup 方法 (shobjidl_core.h)

[自 Windows Server 2003 起,DoContextMenuPopup 不再可供使用。]

创建并显示快捷菜单,跟踪该菜单上的项选择,并调用所选命令。

语法

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
标头 shobjidl_core.h (包括 Shobjidl.h)
DLL Shell32.dll (5.0 或更高版本)