Попробуем создать меню, которое частенько появлется при нажатии правой кнопки мыши... Так называемое всплывающее меню.
В файле ресурсов необходимо создать меню. Для этого перейти на вкладку Resource и Меню Insert, далее New Resource из списка выберите меню. Присвоить ему имя IDR_MENUPOPUP.
Вы уже должны знать как нужно создавать меню (см. "Шаг 6 - Создание меню"). Но здесь надо обратить внимание на маленькую тонкость - создаем наше меню как подменю основного выпадающего меню, которое можно оставить пустым:
Возьмем реакцию на щелчок левой кнопкой мыши. И изменим процедуру реакции.
BOOL CMyDlg::OnInitDialog() { m_PopupMenu.LoadMenu(IDR_MENUPOPUP); ASSERT(m_PopupMenu!=NULL); } void CMyDlg::OnSelect() { CPoint point; GetCursorPos(&point); m_PopupMenu.GetSubMenu(0)->TrackPopupMenu( TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x, point.y, this); }
Сейчас вам уже должны быть прозрачны почти все действия. Остановимся на функции OnSelect(), которая вызывается в подходящий для нас момент. Первоначально нам надо узнать, в каком месте показывать меню, для этого определяем объект CPoint point и берем текущее положение курсора GetCursorPos(&point). Теперь все готово, чтобы показать на экране наше меню. Для этого вызываем функцию m_PopupMenu.GetSubMenu(0), которая возвращает указатель на наш пустой пункт меню, и тут же его применяем по назначению вызвав функцию TrackPopupMenu, первый параметр задает в некотором роде выравнивание, второй и третий - координаты появления, четвертый - родителя, необязательный пятый параметр определяется структурой CRECT, и задает область видимости (то есть куда можно ткнуть).
Шаг прислал sadhan.