Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > popup menu


Автор: Kostt 10.3.2006, 14:42
Здравствуйте!
Создал popup menu для CTreeCtrl, вызывается при нажатии на правую клавишу, НО
появляется в виде стрелочки, при раскрытии которой выпадает уже само содержимое меню.
Инициализацию копировал из чужого исходника, там все ок smile подскажите, в чем дело, плиз

Код

void CTreeDialog::OnNMRclickMaintree(NMHDR *pNMHDR, LRESULT *pResult)
{
    CPoint point, scrpoint;
    GetCursorPos( &point );
    scrpoint = point;
    m_MainTree.ScreenToClient ( &point );
            
    CExtPopupMenuWnd * pPopupWnd = new CExtPopupMenuWnd;
    VERIFY( pPopupWnd->LoadMenu( this->GetSafeHwnd(), IDR_MENU1 ) );
    VERIFY(   pPopupWnd->TrackPopupMenu( 0, scrpoint.x, scrpoint.y ));
        
    *pResult = 1;
}

Автор: Coocky 10.3.2006, 15:02
Цитата

НО
появляется в виде стрелочки, при раскрытии которой выпадает уже само содержимое меню.


Не совсем понял
Код

void CTreeDialog::OnNMRclickMaintree(NMHDR *pNMHDR, LRESULT *pResult)
{

CPoint point    GetCursorPos( &point );
   CMenu menu;
 menu.LoadMenu(IDR_MENU1); //Загружаем созданое в редакторе меню

  CMenu* pSubMenu = menu.GetSubMenu(0);

       // Показываем меню...
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, point.y, this);        
    *pResult = 1;
}


Автор: Earnest 11.3.2006, 17:37
Именно. Дело в том, что в ресурсах меню всегда начинается с MenuBar. В данном случае она состоит из одного пункта, возможно, пустого (вот и стрелочка). Чтобы добраться для выпадающего меню, нужно его попросить у MenuBar, как показал Coocky.

Автор: Kostt 13.3.2006, 06:30
Спасибо за помощь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)