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


Автор: DigitSphinx 5.5.2007, 21:14
у диалога есть меню (большое), как его (ВСЕГО) отобразить по нажатию на правую кнопку мыши ?
Код

void CTDrawDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
    ClientToScreen(&point);
    GetMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, this);
    CDialog::OnRButtonUp(nFlags, point);
}

Показывает не совсем то что мне хочется увидеть (хотя немного похоже)  

Автор: it_medved 5.5.2007, 21:41
Создай лучше отдельное меню, в котором будут дублироватся все пункты, котрорые ты хочешь, и вызывай его, я так сделал - работает, вот пример - 

Код

void CGroup_Tovar_0_0Dlg::OnRButtonDown(UINT nFlags, CPoint point)
{
    popMenu.Detach();//отсоединяет визуальное меню от класса CMenu 
    popMenu.LoadMenu(IDR_FIRSTPOP);//загрусска айдишника меню
    CMenu* popUpMenu = popMenu.GetSubMenu(0);//выбор столбца меню
    ClientToScreen(&point);
    nFlags = popUpMenu->TrackPopupMenu(TPM_RETURNCMD|TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this);

    switch(nFlags) // nFlags = 1
    {
    case ID_POPADD:
        OnBnClickedAddtokorsina();
        break;
    case ID_POPVEIW:
        corzina.DoModal();
        break;
    case ID_POPACCELERATORS:
        MessageBox("Пока нифига нет");
        break;
    case ID_POPABOUT:
        MessageBox("Медвед");
        break;
    }
    CDialog::OnRButtonDown(nFlags, point);
}


CMenu popMenu; - я создал в классе

Автор: DigitSphinx 5.5.2007, 22:40
 smile  спс

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