C++动态创建CMENU的问题

h12417058 2012-05-08 02:52:57
我想获取系统上运行的进程。现在已经把所有有窗体的进程都显示到MENU上了。但是如何给MENU添加事件。因为我的MENU的是在代码里进行声明的。如果用WM_CONTEXTMENU的话他还相应BUTTON的消息。请教如何解决?

这个是buttonclick的消息方法

if (m_Menu == NULL)
{
m_Menu.CreatePopupMenu();
}
else
{
int nItemCount = m_Menu.GetMenuItemCount();
for (int i =0;i < nItemCount;i++)
{
m_Menu.DeleteMenu(0,MF_BYPOSITION);
}

}
int sss = m_Menu.GetMenuItemCount();
thWnd = GetSafeHwnd();
EnumWindows(EnumWindowsProc,NULL);

CPoint pt;
GetCursorPos(&pt);
m_Menu.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
m_Menu.DestroyMenu();


这个是我的回调函数


HWND phWnd = NULL;
phWnd = GetParent(hwnd);
if (phWnd == NULL && IsWindowVisible(hwnd) == 1&&thWnd != hwnd)
{
char str[MAX_PATH];
GetWindowText(hwnd,str,MAX_PATH);
if (strlen(str))
{
m_Menu.AppendMenuA(MF_STRING,(UINT)m_Menu.m_hMenu,str);
}
}

return TRUE;
...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
linranguo 2012-09-11
  • 打赏
  • 举报
回复
TrackPopupMenu 函数的返回值是int型的,就是添加Item时指定的那个值
h12417058 2012-05-08
  • 打赏
  • 举报
回复
我获取不到CMENU的ID啊。如何获取啊
W170532934 2012-05-08
  • 打赏
  • 举报
回复
h12417058 2012-05-08
  • 打赏
  • 举报
回复
我的m_menu是写在了 全局里面

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧