Вот столкнулся с сабжевой проблемкой. Меню создал через редактор ресурсов, но при загрузке/установке ширина меню оказывается равной одному символу :(. При этом оно работает нормально и число элементов соответствует ожидаемому. Вот кусочек :
void CMyListCtrl::OnRButtonDown(UINT nFlags, CPoint point)
{
int i;
CMenu m_menu;
CString str;
i = CListCtrl::HitTest(point, NULL);
if (i != -1){
if (m_menu.LoadMenu(IDR_MENU_CONTROL) == 0)
AfxMessageBox("Error at loading control menu");
POINT pp = point;
ClientToScreen(&pp);
m_menu.TrackPopupMenu(TPM_CENTERALIGN|TPM_RIGHTBUTTON, pp.x, pp.y, this, NULL);
// Set new menu.
SetMenu(&m_menu);
m_menu.DestroyMenu();
}
CListCtrl::OnRButtonDown(nFlags, point);
}
Здравствуйте 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>}
Если тебе надо показать котекстное меню, то делать это надо в обработчике WM_CONTEXTMENU
за исключением TreeCtrl который слегка (а может и не слегка:) глючит
и там контекстное меню лучше показывать в ответ на NM_RCLICK
Здравствуйте Willi, вы писали:
DB>>Вот столкнулся с сабжевой проблемкой. Меню создал через редактор ресурсов, но при загрузке/установке ширина меню оказывается равной одному символу :(. При этом оно работает нормально и число элементов соответствует ожидаемому. Вот кусочек :
-----------------------------skip----------------------------------
W>Скорее всего вместо m_menu.Track... надо написать
W>CMenu* pPopup; W>pPopup = m_menu.GetSubmenu(0);
pPopup->>Track...
W>Вот только не пойму зачем SetMenu вызывать?
W>Если тебе надо показать котекстное меню, то делать это надо в обработчике WM_CONTEXTMENU W>за исключением TreeCtrl который слегка (а может и не слегка:) глючит W>и там контекстное меню лучше показывать в ответ на NM_RCLICK
Я работаю с ListCtrl. В общем уже выкрутился но так неровно, что до сих пор коробит -=8-(. Кажется что не порядок с 5 версией визуала. Я зашел к приятелю и он на 6 с моими исходниками запустил — заработало.
Правда перед этим создали в редакторе ресурсов фиктивное меню, повесили на него обработчики, потом эти же обработчики перенастроили на мое меню. Ну прямо кошмар один. Я теперь боюсь фиктивное меню удалять — вдруг опять глюки пойдут :)))
После этого и на пятом те же исходники (поменяные) работать стали корректно. Буду ставить VC 6. А вот насчет глюков с деревом не слыхал.
Спасибо буду иметь в виду.
Здравствуйте dron_bkk, вы писали:
DB>Я работаю с ListCtrl. В общем уже выкрутился но так неровно, что до сих пор коробит -=8-(. Кажется что не порядок с 5 версией визуала. Я зашел к приятелю и он на 6 с моими исходниками запустил — заработало. DB>Правда перед этим создали в редакторе ресурсов фиктивное меню, повесили на него обработчики, потом эти же обработчики перенастроили на мое меню. Ну прямо кошмар один. Я теперь боюсь фиктивное меню удалять — вдруг опять глюки пойдут :))) DB>После этого и на пятом те же исходники (поменяные) работать стали корректно. Буду ставить VC 6. А вот насчет глюков с деревом не слыхал. DB>Спасибо буду иметь в виду.
Маловероятно что глюки связаны с версией VC.
Скорее всего ты что-то не так делаешь.
Если хошь, можешь прислать проектик который не работает,
посмотрю что у тебя там не так.