Вывод ранее созданного меню в VC 5
От: dron_bkk  
Дата: 07.08.01 06:30
Оценка:
Вот столкнулся с сабжевой проблемкой. Меню создал через редактор ресурсов, но при загрузке/установке ширина меню оказывается равной одному символу :(. При этом оно работает нормально и число элементов соответствует ожидаемому. Вот кусочек :

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);
}
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
Re[2]: Вывод ранее созданного меню в VC 5
От: dron_bkk  
Дата: 15.08.01 06:49
Оценка:
Здравствуйте 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. А вот насчет глюков с деревом не слыхал.
Спасибо буду иметь в виду.
Re[3]: Вывод ранее созданного меню в VC 5
От: Willi  
Дата: 15.08.01 07:02
Оценка:
Здравствуйте dron_bkk, вы писали:

DB>Я работаю с ListCtrl. В общем уже выкрутился но так неровно, что до сих пор коробит -=8-(. Кажется что не порядок с 5 версией визуала. Я зашел к приятелю и он на 6 с моими исходниками запустил — заработало.

DB>Правда перед этим создали в редакторе ресурсов фиктивное меню, повесили на него обработчики, потом эти же обработчики перенастроили на мое меню. Ну прямо кошмар один. Я теперь боюсь фиктивное меню удалять — вдруг опять глюки пойдут :)))
DB>После этого и на пятом те же исходники (поменяные) работать стали корректно. Буду ставить VC 6. А вот насчет глюков с деревом не слыхал.
DB>Спасибо буду иметь в виду.

Маловероятно что глюки связаны с версией VC.
Скорее всего ты что-то не так делаешь.
Если хошь, можешь прислать проектик который не работает,
посмотрю что у тебя там не так.
\/\/i||i
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.