У меня так работает
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
IDR_APPLIST SHMENUBAR DISCARDABLE
BEGIN
IDR_APPLIST, 2,
I_IMAGENONE, IDM_OK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_OK, 0, NOMENU,
I_IMAGENONE, IDM_OPTION, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE | TBSTYLE_DROPDOWN, IDS_OPTION, 0, 1,
END
Здравствуйте, Niswn, Вы писали:
N>Сабж вообще возможен? Если возможен, то как?
N>Пишу на VS2005 под MFC для Pocket PC 2003.
N>Пытаюсь создать меню динамически (т.е не используя ресурсов):
N>N> if (!m_menu)
N> {
N> m_menu = new CMenu;
N> m_menu->CreatePopupMenu();
N> m_menu->AppendMenu(0, ID_RM_END, "End");
N> }
N> if (!m_menu_sub)
N> {
N> m_menu_sub = new CMenu;
N> m_menu_sub->CreatePopupMenu();
N> m_menu_sub->AppendMenu(0, ID_RM_CMD1, "Menu1");
N> m_menu_sub->AppendMenu(0, ID_RM_CMD2, "Menu2");
N> m_menu->AppendMenu(MF_POPUP | MF_STRING, (UINT)m_menu_sub->m_hMenu, "Menu");
N> }
N> SHMENUBARINFO info;
N> HWND hwnd = SHFindMenuBar(m_hWnd);
N> if (hwnd) DeleteObject(hwnd);
N> memset((void*)&info, 0, sizeof(SHMENUBARINFO));
N> info.cbSize = sizeof(SHMENUBARINFO);
N> info.hwndParent = m_hWnd;
N> info.dwFlags = SHCMBF_HMENU;
N> info.nToolBarId = (UINT)m_menu->m_hMenu;
N> info.hInstRes = ::AfxGetInstanceHandle();
N> info.nBmpId = 0;
N> info.cBmpImages = 0;
N> SHCreateMenuBar(&info);
N>
N>Никаких ошибок не выдает, но и никакого меню не отображает.
N>Перепахал весь этот форум, есть подобные сообщения, но они все без ответов.
N>В инете тоже глухо.
N>Неужели нельзя обойтись без ресурсов при создании меню?