Шаг 862 - CMenu::TrackPopupMenu.

Автор Каев А. Г.
BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );

Возвращаемое значение
Отлично от нуля, если функция успешна, иначе 0.

Параметры
nFlags
Определяет флажок экранный позиция и флажок кнопки мыши. Флажок экранный позиция может быть один из следующего:

 
TPM_CENTERALIGN 		Выравнивает по центру меню горизонтально относительно координаты, определенной x.
TPM_LEFTALIGN 		Устанавливает меню так, чтобы левая сторона присоединилась к координате, определенной x.
TPM_RIGHTALIGN 		Устанавливает меню так, чтобы правая сторона присоединилась к координате, определенной x. 

Флажок кнопки мыши может быть любой из следующего:

TPM_LEFTBUTTON 		Заставляет меню  прослеживать левую кнопку мыши.
TPM_RIGHTBUTTON 		Заставляет меню прослеживать правую кнопку мыши.

x
Определяет горизонтальную позицию в аппаратных координатах устройства меню. В зависимости от значения nFlags параметра, меню может быть выровненно по левой границе, выровнено по правому краю, или центрировано относительно этой позиции.
y
Определяет вертикальную позицию в аппаратных координатах устройства верхней части меню на экране.
pWnd
Идентифицирует окно, которое обладает меню. Это окно получает все WM_COMMAND сообщения от меню. В Windows версии 3.1 и позже, окнa не получают WM_COMMAND сообщения до TrackPopupMenu возврата. В Windows 3.0, окно получает WM_COMMAND сообщения прежде TrackPopupMenu возврата.
lpRect
Указатель на структуру RECT или объект CRect, который содержит аппаратные координаты устройства прямоугольника, внутри которого пользователь может нажимать без того, чтобы отклонить всплывающее меню. Если этот параметр NULL всплывающее меню отклонено, если пользователь нажимает снаружи меню. Это должно быть NULL для Windows 3.0.
Для Windows 3.1 и позже, Вы можете использовать следующие константы:

TPM_CENTERALIGN
TPM_LEFTALIGN
TPM_RIGHTALIGN

Замечания
Отображает плавающее всплывающее меню в определенном расположении и прослеживает выбор элементов в меню. Плавающее всплывающее меню может появляться где-нибудь на экране.

Пример

// Кодовый фрагмент показывает, как получить меню File из
// окна прикладной программы и отображать это как плавающее всплывающее меню
// когда правая кнопка мыши нажата в просмотре.
// CMyView - класс наследник CView.

void CMyView::OnRButtonDown(UINT nFlags, CPoint point) 
{
   CView::OnRButtonDown(nFlags, point);

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

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

Hosted by uCoz