Re: Создать меню динамически
От: oleg3d  
Дата: 19.03.07 09:55
Оценка:
У меня так работает
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>Неужели нельзя обойтись без ресурсов при создании меню?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.