CMenu::TrackPopupMenu

在指定的位置显示一个浮动的弹出菜单和跟踪项目的选择在弹出菜单中的。

BOOL TrackPopupMenu(
   UINT nFlags,
   int x,
   int y,
   CWnd* pWnd,
   LPCRECT lpRect = 0
);

参数

  • nFlags
    指定屏幕位置和鼠标位置标志。 有关可用的标志列表参见 TrackPopupMenu

  • x
    指定在弹出菜单的屏幕坐标的水平位置。 根据 nFlags 参数的值,菜单可以是左对齐,右对齐、居中相对于此位置。

  • y
    在屏幕上指定在菜单顶部的屏幕坐标的垂直位置。

  • pWnd
    标识拥有弹出菜单的窗口。 此参数不能是 NULL,因此,即使 TPM_NONOTIFY 标志指定。 此窗口接收从菜单中的所有 WM_COMMAND 消息。 在Windows 3.1版和更高版本,窗口不接收 WM_COMMAND 消息,直到 TrackPopupMenu 返回。 在Windows中,在 TrackPopupMenu 返回之前,3.0,WM_COMMAND 窗口接收消息。

  • lpRect
    已忽略。

返回值

此方法返回对 Windows SDK的 TrackPopupMenu 的结果。

备注

一个浮动的弹出菜单可以显示任何位置在屏幕上。

示例

// The code fragment shows how to get the File menu from the
// application window and displays it as a floating popup menu
// when the right mouse button is clicked in view.
// CMdiView is a CView-derived class.
void CMdiView::OnRButtonDown(UINT nFlags, CPoint point)
{
   CView::OnRButtonDown(nFlags, point);

   CMenu* menu_bar = AfxGetMainWnd()->GetMenu();
   CMenu* file_menu = menu_bar->GetSubMenu(0);    
   ASSERT(file_menu);

   ClientToScreen(&point);
   file_menu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, 
      point.y, this);
}

要求

Header: afxwin.h

请参见

参考

CMenu选件类

层次结构图

CMenu::CreatePopupMenu

CMenu::GetSubMenu

TrackPopupMenu