90分求解:怎么动态创建右键二级、三级菜单
90分求解:如何动态创建右键二级、三级菜单
如何动态创建右键二级、三级菜单?急用,有做过的朋友过来讨论一下
------解决方案--------------------
HMENU hMenu, hMenuPopup;
POINT pt;
hMenu = CreateMenu();
hMenuPopup = CreateMenu();
AppendMenu(hMenuPopup, MF_STRING, 1, TEXT( "&Open "));
AppendMenu(hMenuPopup,MF_STRING,2,TEXT( "&Exit "));
AppendMenu(hMenu,MF_POPUP,(UINT_PTR)hMenuPopup,TEXT( "&Open "));
GetCursorPos (&pt);
SetForegroundWindow (hWnd);
TrackPopupMenu (hMenuPopup,
TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);
SetForegroundWindow (hWnd);
DestroyMenu (hMenuPopup);
DestroyMenu (hMenu);
/*
HMENU hMenu = LoadMenu (NULL, MAKEINTRESOURCE (IDR_MENU));
HMENU hPopupMenu = GetSubMenu (hMenu, 0);
POINT pt;
SetMenuDefaultItem (hPopupMenu, -1, TRUE);
GetCursorPos (&pt);
SetForegroundWindow (hWnd);
TrackPopupMenu (hPopupMenu,
TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);
SetForegroundWindow (hWnd);
DestroyMenu (hPopupMenu);
DestroyMenu (hMenu);
------解决方案--------------------
CMenu menuPopup, menuSub;
menuPopup.CreatePopopMenu();
menuPopup.AppendMenu(MF_STRING, ID_APP_EXIT, (LPCTSTR) "Exit ");
menuSub.CreatePopopMenu();
menuSub.AppendMenu(MF_STRING, ID_OPEN, (LPCTSTR) "Open ");
menuPopup.AppendMenu(MF_POPUP, (UINT) menuSub.m_hMenu, "File ");
menuPopup.TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, 50,
50, this);
三级菜单道理是一样的这里就不写了
------解决方案--------------------
都是一样的。呵。你自己再响应一下菜单消息。
------解决方案--------------------
很显然,都是要获取,再创建,再添加了
有别的吗?我想不出
------解决方案--------------------
响应消息靠这个
menuPopup.TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, 50,
50, this);
最后一个参数必须是处理消息的窗口指针
------解决方案--------------------
给你个例子
http://www.vckbase.com/document/viewdoc/?id=340
如何动态创建右键二级、三级菜单?急用,有做过的朋友过来讨论一下
------解决方案--------------------
HMENU hMenu, hMenuPopup;
POINT pt;
hMenu = CreateMenu();
hMenuPopup = CreateMenu();
AppendMenu(hMenuPopup, MF_STRING, 1, TEXT( "&Open "));
AppendMenu(hMenuPopup,MF_STRING,2,TEXT( "&Exit "));
AppendMenu(hMenu,MF_POPUP,(UINT_PTR)hMenuPopup,TEXT( "&Open "));
GetCursorPos (&pt);
SetForegroundWindow (hWnd);
TrackPopupMenu (hMenuPopup,
TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);
SetForegroundWindow (hWnd);
DestroyMenu (hMenuPopup);
DestroyMenu (hMenu);
/*
HMENU hMenu = LoadMenu (NULL, MAKEINTRESOURCE (IDR_MENU));
HMENU hPopupMenu = GetSubMenu (hMenu, 0);
POINT pt;
SetMenuDefaultItem (hPopupMenu, -1, TRUE);
GetCursorPos (&pt);
SetForegroundWindow (hWnd);
TrackPopupMenu (hPopupMenu,
TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);
SetForegroundWindow (hWnd);
DestroyMenu (hPopupMenu);
DestroyMenu (hMenu);
------解决方案--------------------
CMenu menuPopup, menuSub;
menuPopup.CreatePopopMenu();
menuPopup.AppendMenu(MF_STRING, ID_APP_EXIT, (LPCTSTR) "Exit ");
menuSub.CreatePopopMenu();
menuSub.AppendMenu(MF_STRING, ID_OPEN, (LPCTSTR) "Open ");
menuPopup.AppendMenu(MF_POPUP, (UINT) menuSub.m_hMenu, "File ");
menuPopup.TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, 50,
50, this);
三级菜单道理是一样的这里就不写了
------解决方案--------------------
都是一样的。呵。你自己再响应一下菜单消息。
------解决方案--------------------
很显然,都是要获取,再创建,再添加了
有别的吗?我想不出
------解决方案--------------------
响应消息靠这个
menuPopup.TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, 50,
50, this);
最后一个参数必须是处理消息的窗口指针
------解决方案--------------------
给你个例子
http://www.vckbase.com/document/viewdoc/?id=340