如何关闭托盘右键菜单 请教各位大侠,如何关闭已经弹出的托盘菜单?多谢!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ::SetForegroundWindow(m_hWnd);//弹出菜单::PostMessage(m_hWnd,WM_NULL, 0, 0 ); 是你自己的程序的吗?是的话,在代码中 ::TrackPopupMenu(...); 之前加上::SetForegroundWindow(NOTIFYICONDATA结构体变量.hWnd);这样就可以按下Esc或点击别处菜单就会消失了 switch(lParam) { case WM_RBUTTONUP: //右键起来时弹出快捷菜单 { LPPOINT lpoint=new tagPOINT; ::GetCursorPos(lpoint); //得到鼠标位置 menu.CreatePopupMenu(); //声明一个弹出式菜单 SetForegroundWindow(); //按任意键隐藏弹出的菜单 //增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已 //隐藏),将程序结束。 menu.AppendMenu(MF_STRING,ID_OPEN,"还原"); //添加了ID_OPEN单击的消息函数OnOpen() menu.AppendMenu(MF_STRING,WM_DESTROY,"退出"); //退出命令 //确定弹出式菜单的位置 menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); //资源回收 hmenu=menu.Detach(); menu.DestroyMenu(); delete lpoint; } break; case WM_LBUTTONDBLCLK: //双击左键的处理 { this->ShowWindow(SW_SHOWNORMAL); //简单的显示主窗口 } break; } SetForegroundWindow(); //按任意键隐藏弹出的菜单 lz是不是要通过子菜单关闭弹出式菜单? 下面代码可以的,我上面的回答里很详细的menu.AppendMenu(MF_STRING,WM_DESTROY,"退出"); //退出命令 关闭弹出的菜单:::PostMessage(m_hWnd,WM_CANCELMODE,0,0); 先谢谢大家,可能是我没说清楚,首先我设置一个定时器开始计时,然后手动从程序托盘处右键弹出来一个菜单,当定时器时间到了的时候,去关闭程序在托盘处的右键菜单但现在的问题就是右键菜单是我用别人的类弹出来的,不是自己用windows接口做的我可否查找到该菜单的句柄,并destroy它? 正常的弹出菜单,不管怎样,必然会调用TrackPopupMenu,也必然会指定一个HWND参数,指定这个菜单属于哪个窗口。你没办法知道菜单属于哪个窗口吗?只要知道这个窗口的HWND,发送WM_CANCELMODE消息就能取消菜单。 unhandled exception in xxx.exe 0x00000000005 Access violation afxmessagebox的声音可以改吗? CListCtrl LButtonDown 和 LButtonDblClk 不能同时响应 用户界面线程到底怎么用,能给个例子吗? 关于共享数据互斥访问的问题,在线等揭贴! 请各位高手指导指导! 这句话怎么理解? 急,oracle的安全性怎么论述??? 一个让我迷惑了一天的问题,请大家帮忙看看! irptrace 的问题?? 给我点意见 有关异步套接字的问题,大家把自己的理解说一下!
//弹出菜单
::PostMessage(m_hWnd,WM_NULL, 0, 0 );
是的话,在代码中 ::TrackPopupMenu(...); 之前加上::SetForegroundWindow(NOTIFYICONDATA结构体变量.hWnd);这样就可以按下Esc或点击别处菜单就会消失了
{
case WM_RBUTTONUP: //右键起来时弹出快捷菜单
{
LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint); //得到鼠标位置
menu.CreatePopupMenu(); //声明一个弹出式菜单 SetForegroundWindow(); //按任意键隐藏弹出的菜单 //增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已
//隐藏),将程序结束。
menu.AppendMenu(MF_STRING,ID_OPEN,"还原"); //添加了ID_OPEN单击的消息函数OnOpen()
menu.AppendMenu(MF_STRING,WM_DESTROY,"退出"); //退出命令
//确定弹出式菜单的位置
menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
//资源回收
hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
}
break; case WM_LBUTTONDBLCLK: //双击左键的处理
{
this->ShowWindow(SW_SHOWNORMAL); //简单的显示主窗口
}
break;
}
::PostMessage(m_hWnd,WM_CANCELMODE,0,0);
首先我设置一个定时器开始计时,
然后手动从程序托盘处右键弹出来一个菜单,
当定时器时间到了的时候,
去关闭程序在托盘处的右键菜单但现在的问题就是
右键菜单是我用别人的类弹出来的,不是自己用windows接口做的
我可否查找到该菜单的句柄,并destroy它?
正常的弹出菜单,不管怎样,必然会调用TrackPopupMenu,也必然会指定一个HWND参数,指定这个菜单属于哪个窗口。你没办法知道菜单属于哪个窗口吗?只要知道这个窗口的HWND,发送WM_CANCELMODE消息就能取消菜单。