Re: Вывод ранее созданного меню в VC 5
От: Willi  
Дата: 14.08.01 06:05
Оценка:
Здравствуйте dron_bkk, вы писали:

DB>Вот столкнулся с сабжевой проблемкой. Меню создал через редактор ресурсов, но при загрузке/установке ширина меню оказывается равной одному символу :(. При этом оно работает нормально и число элементов соответствует ожидаемому. Вот кусочек :


DB>void CMyListCtrl::OnRButtonDown(UINT nFlags, CPoint point)

DB>{
DB> int i;
DB> CMenu m_menu;
DB> CString str;
DB> i = CListCtrl::HitTest(point, NULL);
DB> if (i != -1){
DB> if (m_menu.LoadMenu(IDR_MENU_CONTROL) == 0)
DB> AfxMessageBox("Error at loading control menu");
DB> POINT pp = point;
DB> ClientToScreen(&pp);
DB> m_menu.TrackPopupMenu(TPM_CENTERALIGN|TPM_RIGHTBUTTON, pp.x, pp.y, this, NULL);
DB> // Set new menu.
DB> SetMenu(&m_menu);
DB> m_menu.DestroyMenu();
DB> }
DB> CListCtrl::OnRButtonDown(nFlags, point);
DB>}

Скорее всего вместо m_menu.Track... надо написать

CMenu* pPopup;
pPopup = m_menu.GetSubmenu(0);
pPopup->Track...

Вот только не пойму зачем SetMenu вызывать?

Если тебе надо показать котекстное меню, то делать это надо в обработчике WM_CONTEXTMENU
за исключением TreeCtrl который слегка (а может и не слегка:) глючит
и там контекстное меню лучше показывать в ответ на NM_RCLICK
\/\/i||i
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.