#define IDM_EXIT 10
#define IDM_WORK 11
#define IDM_WORK_ON 12
#define IDM_WORK_OFF 13
#define IDM_WORK_DESTROY 14
#define IDM_PROPERTY 15
...
void CSensor::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMenu menu, submenu;
//создаю меню
menu.CreatePopupMenu();
submenu.CreatePopupMenu();
//добавляю параметры основного меню
menu.AppendMenuA(MF_STRING|MF_POPUP,IDM_WORK, "Work"); //как я понимаю что-то надо вместо IDM_WORK умное написать :(
menu.AppendMenuA(MF_STRING,IDM_PROPERTY, "Property");
menu.AppendMenuA(MF_STRING ,IDM_EXIT, "Exit");
//подменю
submenu.AppendMenuA(MF_STRING|MF_CHECKED, IDM_WORK_ON,"On");
submenu.AppendMenuA(MF_STRING|MF_CHECKED, IDM_WORK_OFF,"OFF");
submenu.AppendMenuA(MF_STRING|MF_CHECKED, IDM_WORK_DESTROY,"Destroy");
//отобразить меню
this->ClientToScreen(&point);
menu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
CWnd::OnRButtonUp(nFlags, point);
}
Как связать меню и подменю?
у меня в программе есть
Код:
пробовал подставлять дескриптор подменю
menu.AppendMenuA(MF_STRING|MF_POPUP,submenu.GetSafeHmenu(), "Work");
не помагает :(
А почему вообще вызывается ::AppendMenuA когда везде в доках ::AppendMenu и буква в конце автоматом "подставляется" при компиляции в зависимости от типа приложения...
Цитата:
submenu.m_hMenu вместо идентификатора не пробовал...
спасиб. только я сам туплю уже. надо было просто преобразовать к типу UINT_PTR
menu.AppendMenu(MF_STRING|MF_POPUP,UINT_PTR(submenu.GetSafeHmenu()), "Work");
или
menu.AppendMenu(MF_STRING|MF_POPUP,UINT_PTR(submenu.m_hMenu), "Work");
Цитата:
А почему вообще вызывается ::AppendMenuA когда везде в доках ::AppendMenu и буква в конце автоматом "подставляется" при компиляции в зависимости от типа приложения...
А мне студия во всплывающей подсказке про доступные методы класса CMenu только AppendMenuA предлагает.