Никаких ошибок не выдает, но и никакого меню не отображает.
Перепахал весь этот форум, есть подобные сообщения, но они все без ответов.
В инете тоже глухо.
Неужели нельзя обойтись без ресурсов при создании меню?
У меня так работает
BOOL CAppList::OnInitDialog(){
CMyDialog::OnInitDialog();
if (!m_dlgCommandBar.Create(this) ||
!m_dlgCommandBar.InsertMenuBar(IDR_APPLIST))
{
MessageBox(L"can not create menu",0,0);
return FALSE; // fail to create
}
List.init();
pExeLock = new ExeLock();
LoadPrograms();
return TRUE;
}
IDR_APPLIST MENU DISCARDABLE
BEGIN
MENUITEM "Ok", IDM_OK
POPUP "Option"
BEGIN
MENUITEM "Add", IDM_ADD
MENUITEM "Delete", IDM_DELETE
MENUITEM "Detail", IDM_DETAIL
END
END
Здравствуйте, Niswn, Вы писали:
N>Сабж вообще возможен? Если возможен, то как?
N>Пишу на VS2005 под MFC для Pocket PC 2003. N>Пытаюсь создать меню динамически (т.е не используя ресурсов):
N>Никаких ошибок не выдает, но и никакого меню не отображает. N>Перепахал весь этот форум, есть подобные сообщения, но они все без ответов. N>В инете тоже глухо. N>Неужели нельзя обойтись без ресурсов при создании меню?
Так не подойдет, к сожалению. Я не знаю изначально сколько у меня пунков меню и не знаю их названия. Это все возвращается специальными функциями, поэтому жестко прописать в ресурсы я их не могу. Надо сформировать меню динамически.
Здравствуйте, oleg3d, Вы писали:
O>У меня так работает O>BOOL CAppList::OnInitDialog(){ O> CMyDialog::OnInitDialog();
O> if (!m_dlgCommandBar.Create(this) || O> !m_dlgCommandBar.InsertMenuBar(IDR_APPLIST)) O> { O> MessageBox(L"can not create menu",0,0); O> return FALSE; // fail to create O> }
O> List.init(); O> pExeLock = new ExeLock(); O> LoadPrograms();
O> return TRUE; O>}
Пождойдет...
void CAppList::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu){
Сюда пишем инсерт итем делете
на подобие (как у меня)
pPopupMenu->EnableMenuItem(IDM_DETAIL, enable ? MF_ENABLED : MF_GRAYED);
}
Здравствуйте, Niswn, Вы писали:
N>Так не подойдет, к сожалению. Я не знаю изначально сколько у меня пунков меню и не знаю их названия. Это все возвращается специальными функциями, поэтому жестко прописать в ресурсы я их не могу. Надо сформировать меню динамически.
N>Здравствуйте, oleg3d, Вы писали:
O>>У меня так работает O>>BOOL CAppList::OnInitDialog(){ O>> CMyDialog::OnInitDialog();
O>> if (!m_dlgCommandBar.Create(this) || O>> !m_dlgCommandBar.InsertMenuBar(IDR_APPLIST)) O>> { O>> MessageBox(L"can not create menu",0,0); O>> return FALSE; // fail to create O>> }
O>> List.init(); O>> pExeLock = new ExeLock(); O>> LoadPrograms();
O>> return TRUE; O>>}
Обычно я для простоты не добавляю/удаляю пункты, а просто назначаю ненужной кнопке пустой текст и дизаблю её (назначаю TBSTATE_INDETERMINATE). Когда нужна снова — назначаю нужный текст и енаблю.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...