Шаг 571 - 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 и позже окно не получают 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
TPM_RIGHTBUTTON 

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

Пример

// Кодовый фрагмент показывает, как получить меню 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