CMFCPopupMenu 类

实现 Windows 弹出菜单功能,并通过添加可拖曳菜单和工具提示等功能进行扩展。 有关详细信息,请参阅所安装的 Visual Studio 的 C\atlmfc\src\mfc 文件夹中的源代码。

语法

class CMFCPopupMenu : public CMiniFrameWnd

成员

受保护构造函数

名称 描述
CMFCPopupMenu::CMFCPopupMenu 构造 CMFCPopupMenu 对象。

公共方法

名称 描述
CMFCPopupMenu::ActivatePopupMenu
CMFCPopupMenu::AlwaysShowEmptyToolsEntry 设置是否启用弹出菜单以显示用户定义的工具的空条目。
CMFCPopupMenu::AreAllCommandsShown
CMFCPopupMenu::CheckArea 确定相对于弹出菜单的点的位置。
CMFCPopupMenu::CloseMenu
CMFCPopupMenu::Create 创建弹出菜单并将其附加到 CMFCPopupMenu 对象。
CMFCPopupMenu::DefaultMouseClickOnClose
CMFCPopupMenu::EnableMenuLogo 初始化弹出菜单的徽标。
CMFCPopupMenu::EnableMenuSound 启用菜单声音。
CMFCPopupMenu::EnableResize
CMFCPopupMenu::EnableScrolling
CMFCPopupMenu::EnableVertResize
CMFCPopupMenu::FindSubItemByCommand
CMFCPopupMenu::GetActiveMenu 返回当前活动菜单。
CMFCPopupMenu::GetAnimationSpeed 返回弹出菜单的动画速度。
CMFCPopupMenu::GetAnimationType 返回弹出菜单动画的当前类型。
CMFCPopupMenu::GetDropDirection
CMFCPopupMenu::GetForceMenuFocus 指示在显示弹出菜单时焦点是否返回到菜单栏。
CMFCPopupMenu::GetForceShadow
CMFCPopupMenu::GetHMenu 返回附加菜单资源的句柄。
CMFCPopupMenu::GetMenuBar 返回嵌入在弹出菜单中的 CMFCPopupMenuBar
CMFCPopupMenu::GetMenuItem 返回指向指定索引处的菜单项的指针。
CMFCPopupMenu::GetMenuItemCount 返回弹出菜单中的项数。
CMFCPopupMenu::GetMessageWnd 返回指向框架路由弹出菜单消息的窗口的指针。
CMFCPopupMenu::GetParentArea
CMFCPopupMenu::GetParentButton 返回指向父级工具栏按钮的指针。
CMFCPopupMenu::GetParentPopupMenu 返回指向父级弹出菜单的指针。
CMFCPopupMenu::GetParentRibbonElement
CMFCPopupMenu::GetParentToolBar 返回指向父级工具栏的指针。
CMFCPopupMenu::GetQuickCustomizeType
CMFCPopupMenu::GetSelItem 返回指向当前所选菜单命令的指针。
CMFCPopupMenu::HasBeenResized
CMFCPopupMenu::HideRarelyUsedCommands 指示弹出菜单是否可隐藏很少使用的命令。
CMFCPopupMenu::InCommand
CMFCPopupMenu::InsertItem 将新项插入到指定位置的弹出菜单中。
CMFCPopupMenu::InsertSeparator 将分隔符插入到指定位置的弹出菜单中。
CMFCPopupMenu::IsAlwaysClose
CMFCPopupMenu::IsAlwaysShowEmptyToolsEntry
CMFCPopupMenu::IsCustomizePane 指示弹出菜单是否等效于 QuickCustomizePane。
CMFCPopupMenu::IsEscClose
CMFCPopupMenu::IsIdle 指示弹出菜单当前是否处于空闲状态。
CMFCPopupMenu::IsMenuSound
CMFCPopupMenu::IsQuickCustomize 确定关联的 CMFCToolBarMenuButton Class 是否处于 QuickCustomize 模式。
CMFCPopupMenu::IsResizeble
CMFCPopupMenu::IsRightAlign 指示菜单是右对齐还是左对齐。
CMFCPopupMenu::IsScrollable
CMFCPopupMenu::IsSendMenuSelectMsg 指示当用户从弹出菜单中选择命令时框架是否通知父框架。
CMFCPopupMenu::IsShown 指示弹出菜单当前是否可见。
CMFCPopupMenu::MoveTo
CMFCPopupMenu::OnCmdMsg (替代 CFrameWnd::OnCmdMsg。)
CMFCPopupMenu::PostCommand
CMFCPopupMenu::PreTranslateMessage (替代 CFrameWnd::PreTranslateMessage。)
CMFCPopupMenu::RecalcLayout 当打开或关闭标准控件条或调整框架窗口大小时,由框架调用。 (替代 CFrameWnd::RecalcLayout。)
CMFCPopupMenu::RemoveAllItems 从弹出菜单中清除所有项。
CMFCPopupMenu::RemoveItem 从弹出菜单中移除指定项。
CMFCPopupMenu::SaveState
CMFCPopupMenu::SetAnimationSpeed 设置弹出菜单的动画速度。
CMFCPopupMenu::SetAnimationType 设置弹出菜单的动画类型。
CMFCPopupMenu::SetAutoDestroy
CMFCPopupMenu::SetDefaultItem 设置弹出菜单的默认命令。
CMFCPopupMenu::SetForceMenuFocus 当显示弹出菜单时,强制输入焦点返回到菜单栏。
CMFCPopupMenu::SetForceShadow 当弹出菜单出现在主框架外时,强制框架绘制菜单阴影。
CMFCPopupMenu::SetMaxWidth 设置弹出菜单的最大宽度。
CMFCPopupMenu::SetMessageWnd
CMFCPopupMenu::SetParentRibbonElement
CMFCPopupMenu::SetQuickCustomizeType
CMFCPopupMenu::SetQuickMode
CMFCPopupMenu::SetRightAlign 设置弹出菜单的菜单对齐方式。
CMFCPopupMenu::SetSendMenuSelectMsg 设置一个标志,用于控制当用户选择命令时弹出菜单是否通知其父框架。
CMFCPopupMenu::ShowAllCommands 强制弹出菜单显示所有命令。
CMFCPopupMenu::TriggerResize
CMFCPopupMenu::UpdateAllShadows 更新所有打开的弹出菜单的阴影。
CMFCPopupMenu::UpdateShadow 更新弹出菜单的阴影。

受保护方法

名称 描述
CMFCPopupMenu::CreateTearOffBar
CMFCPopupMenu::OnChangeHot
CMFCPopupMenu::OnChooseItem

备注

通常,MFC 会自动创建弹出菜单。 如果要手动创建 CMFCPopupMenu 对象,请在堆上分配一个对象,然后调用 CMFCPopupMenu::Create

示例

以下示例演示如何配置弹出菜单对象。 该示例演示如何设置弹出菜单的徽标和声音,设置动画速度和类型,在弹出菜单出现在主框架外时绘制菜单阴影,设置最大宽度,以及设置弹出菜单的右对齐方式。 此代码片段属于自定义页面示例

// 30 is the size of the logo in pixels.
pPopupMenu->EnableMenuLogo(30);
pPopupMenu->EnableMenuSound();
// 500 is the animation speed in milliseconds.
pPopupMenu->SetAnimationSpeed(500);
pPopupMenu->SetAnimationType(CMFCPopupMenu::SLIDE);
pPopupMenu->SetForceShadow(true);
// 200 is the maximum width of the pop-up menu in pixels.
pPopupMenu->SetMaxWidth(200);
pPopupMenu->SetRightAlign();
pPopupMenu->InsertSeparator();

继承层次结构

CObject

CCmdTarget

CWnd

CFrameWnd

CMiniFrameWnd

CMFCPopupMenu

要求

标头:afxpopupmenu.h

CMFCPopupMenu::ActivatePopupMenu

static BOOL __stdcall ActivatePopupMenu(
    CFrameWnd* pTopFrame,
    CMFCPopupMenu* pPopupMenu);

参数

[in] pTopFrame
[in] pPopupMenu

返回值

注解

CMFCPopupMenu::AlwaysShowEmptyToolsEntry

设置是否启用弹出菜单以显示用户定义的工具的空条目。

static void AlwaysShowEmptyToolsEntry(BOOL bShow = TRUE);

参数

bShow
[in] 如果弹出菜单可显示空条目,则为 TRUE;否则为 FALSE。

CMFCPopupMenu::AreAllCommandsShown

BOOL AreAllCommandsShown() const;

返回值

备注

CMFCPopupMenu::CheckArea

确定相对于弹出菜单的点的位置。

MENUAREA_TYPE CheckArea(const CPoint& ptScreen) const;

参数

ptScreen
[in] 一个点,用屏幕坐标表示。

返回值

一个 MENUAREA_TYPE 参数,指示点相对于弹出菜单的位置。

注解

MENUAREA_TYPE 参数可采用下列任一值。

  • OUTSIDE - ptScreen 位于弹出菜单外部。

  • LOGO - ptScreen 位于徽标区域。

  • TEAROFF_CAPTION - ptScreen 位于拖曳式标题上方。

  • SHADOW_BOTTOM - ptScreen 位于弹出菜单的底部阴影上方。

  • SHADOW_RIGHT - ptScreen 位于弹出菜单的右侧阴影上方。

  • MENU - ptScreen 位于命令上方。

CMFCPopupMenu::CloseMenu

void CloseMenu(BOOL bSetFocusToBar = FALSE);

参数

[in] bSetFocusToBar

备注

CMFCPopupMenu::CMFCPopupMenu

构造 CMFCPopupMenu 对象。

CMFCPopupMenu(
    CMFCToolBarsMenuPropertyPage* pCustPage,
    LPCTSTR lpszTitle);

参数

pCustPage
[in] 指向自定义页的指针。

lpszTitle
[in] 包含菜单标题的字符串。

注解

此方法为 CMFCPopupMenu 分配资源。 若要创建弹出菜单项,请调用 CMFCPopupMenu::Create

CMFCPopupMenu::Create

创建弹出菜单并将其附加到 CMFCPopupMenu 对象。

virtual BOOL Create(
    CWnd* pWndParent,
    int x,
    int y,
    HMENU hMenu,
    BOOL bLocked = FALSE,
    BOOL bOwnMessage = FALSE);

参数

pWndParent
[in] CMFCPopupMenu 的父窗口。

x
[in] 弹出菜单位置的水平屏幕坐标

y
[in] 弹出菜单位置的垂直屏幕坐标。

hMenu
[in] 菜单资源的句柄。

bLocked
[in] 一个布尔参数,指示菜单是否可自定义。 FALSE 表示弹出菜单可自定义。

bOwnMessage
[in] 一个布尔参数,指示框架如何路由菜单消息。 有关更多详细信息,请参阅“备注”部分。

返回值

如果此方法成功,则为 TRUE;否则为 FALSE。

备注

如果 bOwnMessage 为 TRUE,则框架会将任何菜单消息路由到 pWndParent。 如果 bOwnMessage 为 TRUE,则 pWndParent 不得为 NULL。 如果 bOwnMessage 为 FALSE,框架会将菜单消息路由到父级弹出菜单。

示例

下面的示例演示如何使用 CMFCPopuMenu 类的 Create 方法。 此代码片段属于自定义页面示例

CMFCPopupMenu *pPopupMenu = new CMFCPopupMenu;
// CPoint point
// CMenu* pPopup
// The this pointer points to CMainFrame class which extends the CFrameWnd class.
pPopupMenu->Create(this, point.x, point.y, pPopup->Detach());

CMFCPopupMenu::CreateTearOffBar

virtual CPane* CreateTearOffBar(
    CFrameWnd* pWndMain,
    UINT uiID,
    LPCTSTR lpszName);

参数

[in] pWndMain
[in] uiID
[in] lpszName

返回值

注解

CMFCPopupMenu::DefaultMouseClickOnClose

virtual BOOL DefaultMouseClickOnClose() const;

返回值

备注

初始化弹出菜单的徽标。

void EnableMenuLogo(
    int iLogoSize,
    LOGO_LOCATION nLogoLocation = MENU_LOGO_LEFT);

参数

iLogoSize
[in] 徽标的大小(以像素为单位)。

nLogoLocation
[in] 指示徽标位置的枚举数据类型。

备注

若要显示徽标,请在主框架窗口中实现 CFrameWndEx::OnDrawMenuLogo 方法。

nLogoLocation 的可能值为 MENU_LOGO_LEFT、MENU_LOGO_RIGHT、MENU_LOGO_TOP 和 MENU_LOGO_BOTTOM。

CMFCPopupMenu::EnableMenuSound

启用菜单声音。

static void EnableMenuSound(BOOL bEnable = TRUE);

参数

bEnable
[in] 若要启用声音,则为 TRUE;否则为 FALSE。

注解

如果启用声音,框架会在用户打开弹出菜单或选择菜单命令时调用 PlaySound 方法。 此功能默认启用。

CMFCPopupMenu::EnableResize

void EnableResize(CSize sizeMinResize);

参数

[in] sizeMinResize

备注

CMFCPopupMenu::EnableScrolling

void EnableScrolling(BOOL = TRUE);

参数

[in] BOOL

注解

CMFCPopupMenu::EnableVertResize

void EnableVertResize(int nMinResize);

参数

[in] nMinResize

注解

CMFCPopupMenu::FindSubItemByCommand

CMFCToolBarMenuButton* FindSubItemByCommand(UINT uiCmd) const;

参数

[in] uiCmd

返回值

备注

CMFCPopupMenu::GetActiveMenu

返回当前活动菜单。

static CMFCPopupMenu* GetActiveMenu();

返回值

指向活动弹出菜单的指针;如果没有弹出菜单当前处于活动状态,则为 NULL。

注解

每个应用程序最多可以有一个活动弹出菜单。

CMFCPopupMenu::GetAnimationSpeed

返回弹出菜单的动画速度。

static UINT GetAnimationSpeed();

返回值

一个整数,指示完成弹出菜单动画所需的时间(以毫秒为单位)。

备注

动画速度是一个全局值。 使用 CMFCPopupMenu::SetAnimationSpeed 更改弹出菜单的动画速度。

CMFCPopupMenu::GetAnimationType

返回弹出动画的当前类型。

static CMFCPopupMenu::ANIMATION_TYPE GetAnimationType(BOOL bNoSystem = FALSE);

参数

bNoSystem
[in] 一个布尔参数,指示此方法是否检查全局值。 如果希望此方法返回 CMFCPopupMenu 类实例的动画样式,则为 FALSE。

返回值

描述动画类型的枚举值。

备注

弹出菜单的动画样式对应用程序来说是一个全局值。 使用 CMFCPopupMenu::SetAnimationType 设置动画样式。

下表列出了可能的动画类型。

说明
NO_ANIMATION 弹出菜单未进行动画处理,并立即显示。
UNFOLD 框架显示从左上角到右下角的弹出菜单。
SLIDE 弹出菜单从上到下移动。
FADE 弹出菜单首先是透明的,并逐渐纯色显示。

CMFCPopupMenu::GetDropDirection

DROP_DIRECTION GetDropDirection() const;

返回值

备注

CMFCPopupMenu::GetForceMenuFocus

指示在显示弹出菜单时焦点是否返回到菜单栏。

static BOOL GetForceMenuFocus();

返回值

如果在显示弹出菜单时输入焦点返回到菜单栏,则为 TRUE;如果弹出菜单保留焦点,则为 FALSE。

注解

默认情况下,应用程序不会将焦点返回到菜单栏。 若要更改此设置,请使用 CMFCPopupMenu::SetForceMenuFocus

CMFCPopupMenu::GetForceShadow

static BOOL __stdcall GetForceShadow();

返回值

注解

CMFCPopupMenu::GetHMenu

返回附加菜单资源的句柄。

HMENU GetHMenu();

CMFCPopupMenu::GetMenuBar

返回嵌入在弹出菜单中的 CMFCPopupMenuBar

virtual CMFCPopupMenuBar* GetMenuBar();

返回值

指向嵌入的 CMFCPopupMenuBar 的指针。

备注

弹出菜单具有嵌入的 CMFCPopupMenuBar 对象。 如果使用其他嵌入类,则必须在派生类中替代此方法。

CMFCPopupMenu::GetMenuItem

返回指向指定索引处的菜单项的指针。

CMFCToolBarMenuButton* GetMenuItem(int iIndex) const;

参数

iIndex
[in] 菜单项的从零开始的索引。

返回值

指向菜单项的指针。 如果索引无效,则返回 NULL。

注解

菜单项由 CMFCToolBarMenuButton 类表示。 调用此方法时,它将返回指向相应 CMFCToolBarMenuButton 的指针。

CMFCPopupMenu::GetMenuItemCount

返回弹出菜单中的项数。

int GetMenuItemCount() const;

返回值

菜单中的项数。

CMFCPopupMenu::GetMessageWnd

返回指向框架路由弹出菜单消息的窗口的指针。

CWnd* GetMessageWnd() const;

返回值

指向接收弹出菜单消息的窗口的指针;如果没有窗口,则为 NULL。

备注

使用 CMFCPopupMenu::Create 方法创建弹出菜单时,可以指定接收菜单消息的窗口。

CMFCPopupMenu::GetParentArea

virtual CWnd* GetParentArea(CRect& rectParentBtn);

参数

[in] rectParentBtn

返回值

注解

CMFCPopupMenu::GetParentButton

返回指向父级工具栏按钮的指针。

CMFCToolBarMenuButton* GetParentButton() const;

返回值

指向父级工具栏按钮的指针。 如果弹出菜单没有父级工具栏按钮,则为 NULL。

备注

CMFCPopupMenu 可与菜单上的按钮关联。 在此情况下,当用户选择父级工具栏按钮时,将显示弹出菜单。

如果弹出菜单是快捷菜单,则它没有父级工具栏按钮。

CMFCPopupMenu::GetParentPopupMenu

返回指向父级弹出菜单的指针。

CMFCPopupMenu* GetParentPopupMenu() const;

返回值

指向父级 CMFCPopupMenu 对象的指针;如果没有父级弹出菜单,则为 NULL。

注解

仅当弹出菜单是子菜单时,弹出菜单才具有父级 CMFCPopupMenu 对象。

CMFCPopupMenu::GetParentRibbonElement

CMFCRibbonBaseElement* GetParentRibbonElement() const;

返回值

注解

CMFCPopupMenu::GetParentToolBar

返回指向父级工具栏的指针。

CMFCToolBar* GetParentToolBar() const;

返回值

指向父工具栏的指针。 如果弹出菜单没有父工具栏,则为 NULL。

注解

如果 CMFCPopupMenu 是快捷菜单,则它没有父工具栏。

CMFCPopupMenu::GetQuickCustomizeType

QUICK_CUSTOMIZE_TYPE GetQuickCustomizeType() const;

返回值

备注

CMFCPopupMenu::GetSelItem

返回指向当前所选菜单命令的指针。

CMFCToolBarMenuButton* GetSelItem();

返回值

指向当前所选菜单命令的指针;如果未选择任何项,则为 NULL。

备注

弹出菜单上的菜单命令由 CMFCToolBarMenuButton 类或派生自 CMFCToolBarMenuButton 的类表示。

CMFCPopupMenu::HasBeenResized

BOOL HasBeenResized() const;

返回值

备注

CMFCPopupMenu::HideRarelyUsedCommands

指示弹出菜单是否可隐藏很少使用的命令。

BOOL HideRarelyUsedCommands() const;

返回值

如果弹出菜单可隐藏很少使用的命令,则为 TRUE;否则为 FALSE。

备注

此方法仅指定弹出菜单是否可隐藏很少使用的命令,而不是是否启用该配置。 如果弹出菜单具有父按钮且父窗口派生自 CMFCMenuBar 类,则弹出菜单可以隐藏很少使用的命令。 使用 CMFCMenuBar::SetRecentlyUsedMenus 启用此功能,使用 CMFCMenuBar::IsRecentlyUsedMenus 来确定此功能当前是否已启用。 必须为父窗口调用这两种方法。

CMFCPopupMenu::InCommand

virtual BOOL InCommand();

返回值

注解

CMFCPopupMenu::InsertItem

将新项插入到指定位置的弹出菜单中。

int InsertItem(
    const CMFCToolBarMenuButton& button,
    int iInsertA = -1);

参数

按钮
[in] 对要添加的菜单项的引用。

iInsertAt
[in] 新项的从零开始的索引。 如果 iInsertAt 为 -1,则该项将添加到菜单末尾。

返回值

插入项的位置的从零开始的索引。 如果方法失败,则为 -1。

备注

如果为 iInsertAt 提供无效值,例如大于弹出菜单上当前项数的整数,此方法将失败。

CMFCPopupMenu::InsertSeparator

将分隔符插入到指定位置的弹出菜单中。

int InsertSeparator(int iInsertAt = -1);

参数

iInsertAt
[in] 此方法将插入分隔符的位置的从零开始的索引。

返回值

插入分隔符的位置的从零开始的索引。 如果此方法失败,则为 -1。

备注

如果 iInsertAt 的值为 -1,则表示此方法会将分隔符添加到弹出菜单的末尾。

如果 iInsertAt 是无效值,此方法将失败。

CMFCPopupMenu::IsAlwaysClose

virtual BOOL IsAlwaysClose() const;

返回值

注解

CMFCPopupMenu::IsAlwaysShowEmptyToolsEntry

static BOOL __stdcall IsAlwaysShowEmptyToolsEntry();

返回值

注解

CMFCPopupMenu::IsCustomizePane

指示弹出菜单是否等效于 QuickCustomizePane。

BOOL IsCustomizePane();

返回值

如果弹出窗口为 QuckCustomizePane,则为 TRUE;否则为 FALSE。

备注

使用 QuickCustomizePane 使用户能够直接自定义弹出菜单。 QuickCustomizePane 是一个 CMFCPopupMenu,当用户单击工具栏按钮来直接编辑它时显示。

应用程序应在 CMDIFrameWndEx::OnShowCustomizePane 期间调用此方法。

CMFCPopupMenu::IsEscClose

BOOL IsEscClose();

返回值

注解

CMFCPopupMenu::IsIdle

指示弹出菜单当前是否处于空闲状态。

virtual BOOL IsIdle() const;

返回值

如果弹出菜单处于空闲模式,则为 TRUE;否则为 FALSE。

备注

默认情况下,如果显示动画已完成且用户未滚动弹出菜单,则弹出菜单处于空闲模式。

CMFCPopupMenu::IsMenuSound

static UINT __stdcall IsMenuSound();

返回值

备注

CMFCPopupMenu::IsQuickCustomize

确定关联的 CMFCToolBarMenuButton Class 是否处于 QuickCustomize 模式。

BOOL IsQuickCustomize();

返回值

如果关联的菜单按钮处于 QuickCustomize 模式,则为 TRUE;否则为 FALSE。 如果弹出菜单未与 CMFCToolBarMenuButton 关联,此方法也会返回 FALSE。

备注

在 QuickCustomize 模式下,用户选择工具栏上的按钮来直接自定义该按钮。

CMFCPopupMenu::IsResizeble

BOOL IsResizeble() const;

返回值

备注

CMFCPopupMenu::IsRightAlign

指示菜单是右对齐还是左对齐。

BOOL IsRightAlign() const;

返回值

如果菜单右对齐,则为 TRUE;如果菜单左对齐,则为 FALSE。

备注

可使用 CMFCPopupMenu::SetRightAlign 设置菜单的对齐方式。 默认情况下,弹出菜单使用左对齐方式。

菜单对齐不是全局设置,可能因弹出菜单而异。

CMFCPopupMenu::IsScrollable

BOOL IsScrollable() const;

返回值

备注

CMFCPopupMenu::IsSendMenuSelectMsg

指示当用户从弹出菜单中选择命令时框架是否通知父框架。

static BOOL IsSendMenuSelectMsg();

返回值

如果框架通知父框架,则为 TRUE;否则为 FALSE。

备注

在用户选择菜单命令时,框架通过向父框架发送 WM_MENUSELECT 消息来通知该框架。

CMFCPopupMenu::IsShown

指示弹出菜单当前是否可见。

BOOL IsShown() const;

返回值

如果弹出菜单可见,则为 TRUE;否则为 FALSE。

CMFCPopupMenu::MoveTo

void MoveTo(const CPoint& pt);

参数

[in] pt

备注

CMFCPopupMenu::OnChangeHot

virtual void OnChangeHot(int nHot);

参数

[in] nHot

注解

CMFCPopupMenu::OnChooseItem

virtual void OnChooseItem(UINT uidCmdID);

参数

[in] uidCmdID

注解

CMFCPopupMenu::OnCmdMsg

virtual BOOL OnCmdMsg(
    UINT nID,
    int nCode,
    void* pExtra,
    AFX_CMDHANDLERINFO* pHandlerInfo);

参数

[in] nID
[in] nCode
[in] pExtra
[in] pHandlerInfo

返回值

备注

CMFCPopupMenu::PostCommand

BOOL PostCommand(UINT uiCommandID);

参数

[in] uiCommandID

返回值

注解

CMFCPopupMenu::PreTranslateMessage

virtual BOOL PreTranslateMessage(MSG* pMsg);

参数

[in] pMsg

返回值

备注

CMFCPopupMenu::RecalcLayout

virtual void RecalcLayout(BOOL bNotify = TRUE);

参数

[in] bNotify

备注

CMFCPopupMenu::RemoveAllItems

从弹出菜单中清除所有项。

void RemoveAllItems();

CMFCPopupMenu::RemoveItem

从弹出菜单中移除指定项。

BOOL RemoveItem(int iIndex);

参数

iIndex
[in] 要删除的项的从零开始的索引。

返回值

如果此方法成功,则为 TRUE;否则为 FALSE。

备注

此方法会自动排列受删除项影响的任何分隔符。 若要详细了解框架如何重新排列分隔符,请参阅 CMFCToolBar::RemoveButton

CMFCPopupMenu::SaveState

virtual void SaveState();

备注

CMFCPopupMenu::SetAnimationSpeed

设置弹出菜单的动画速度。

static void SetAnimationSpeed(UINT nElapse);

参数

nElapse
[in] 新的动画速度(以毫秒为单位)。

备注

动画速度是一个全局值,会影响应用程序中的所有弹出菜单。 此值指定完成弹出菜单动画所需的时间。

默认情况下,该参数设置为 30 毫秒。 nElapse 的有效值介于 0 到 200 之间。

CMFCPopupMenu::SetAnimationType

设置此弹出菜单的动画类型。

static void SetAnimationType(CMFCPopupMenu::ANIMATION_TYPE type);

参数

type
[in] 一个指定动画类型的枚举数据类型。

备注

有关类型的有效值列表,请参阅 CMFCPopupMenu::GetAnimationType

CMFCPopupMenu::SetAutoDestroy

void SetAutoDestroy(BOOL bAutoDestroy = TRUE);

参数

[in] bAutoDestroy

备注

CMFCPopupMenu::SetDefaultItem

设置弹出菜单的默认命令。

void SetDefaultItem(UINT uiCmd);

参数

uiCmd
[in] 新的默认命令的菜单命令 ID。

备注

弹出菜单中的默认命令是弹出菜单出现时选择的命令。

CMFCPopupMenu::SetForceMenuFocus

当显示弹出菜单时,强制输入焦点返回到菜单栏。

static void SetForceMenuFocus(BOOL bValue);

参数

bValue
[in] 如果希望框架在显示弹出菜单时强制输入焦点回到菜单栏,则为 TRUE。 如果希望弹出菜单保留焦点,则为 FALSE。

备注

此方法会设置一个标志,它是应用程序中所有弹出菜单的全局标志。 默认情况下,未启用此功能。

CMFCPopupMenu::SetForceShadow

当弹出菜单出现在主框架外时,强制框架绘制菜单阴影。

static void SetForceShadow(BOOL bValue);

参数

bValue
[in] 如果希望框架绘制菜单阴影,则为 TRUE;否则为 FALSE。

备注

调用此方法时,它会在应用程序中设置全局标志。 此标志会影响应用程序中的所有弹出菜单。

CMFCPopupMenu::SetMaxWidth

设置弹出菜单的最大宽度。

void SetMaxWidth(int iMaxWidth);

参数

iMaxWidth
[in] 弹出菜单的最大宽度(以像素为单位)。

备注

如果与菜单命令关联的文本超出最大宽度,则会截断该文本,且超出的部分替换为三个点。

CMFCPopupMenu::SetMessageWnd

void SetMessageWnd(CWnd* pMsgWnd);

参数

[in] pMsgWnd

备注

CMFCPopupMenu::SetParentRibbonElement

void SetParentRibbonElement(CMFCRibbonBaseElement* pElem);

参数

[in] pElem

备注

CMFCPopupMenu::SetQuickCustomizeType

void SetQuickCustomizeType(QUICK_CUSTOMIZE_TYPE Type);

参数

[in] Type

备注

CMFCPopupMenu::SetQuickMode

void SetQuickMode();

备注

CMFCPopupMenu::SetRightAlign

设置弹出菜单的菜单对齐方式。

void SetRightAlign(BOOL bRightAlign = TRUE);

参数

bRightAlign
[in] 一个指示菜单对齐方式的布尔值。 TRUE 表示右对齐,FALSE 表示左对齐。

备注

默认情况下,所有弹出菜单都左对齐。

CMFCPopupMenu::SetSendMenuSelectMsg

设置一个标志,用于控制当用户选择命令时弹出菜单是否通知其父框架。

static void SetSendMenuSelectMsg(BOOL bSet = TRUE);

参数

bSet
[in] 如果弹出菜单通知其父框架,则为 TRUE;否则为 FALSE。

注解

这是应用程序中所有弹出菜单的全局选项。 如果启用,弹出菜单将在用户选择命令时将 WM_MENUSELECT 消息发送到父框架。

CMFCPopupMenu::ShowAllCommands

强制弹出菜单显示所有命令。

void ShowAllCommands();

备注

这不是全局设置,仅影响当前弹出菜单。

CMFCPopupMenu::TriggerResize

void TriggerResize();

备注

CMFCPopupMenu::UpdateAllShadows

更新所有打开的弹出菜单的阴影。

static void UpdateAllShadows(LPRECT lprectScreen = NULL);

参数

lprectScreen
[in] 一个矩形,指定要更新的区域(用屏幕坐标表示)。

注解

当弹出菜单显示在动画控件或具有动态内容的其他窗口上时,此方法非常有用。

CMFCPopupMenu::UpdateShadow

更新弹出菜单的阴影。

void UpdateShadow(LPRECT lprectScreen = NULL);

参数

lprectScreen
[in] 一个矩形,指定要更新的区域的边界(用屏幕坐标表示)。

备注

当具有阴影的弹出菜单与动画图像重叠时,调用此方法。

另请参阅

层次结构图

CMFCPopupMenuBar 类