如何实现任务栏图标按钮菜单

wodemuyecun 2008-10-08 06:37:11
我想写一个程序具有任务栏图标的功能,并且在鼠标右键单击时能弹出菜单,但是不知为何菜单无法弹出,请大家帮忙看看。
我的具体操作如下:

1.我用VC建立了一个对话框程序命名为TEST
2.添加NOTIFYICONDATA类型的成员变量 tnd。
然后调用Shell_NotifyIcon创建了一个任务栏图标程序。将如下代码写在OnInitDialog()中

NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=this->m_hWnd;
tnd.uID=IDI_TEST;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage=WM_POPMENU;
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_TEST));
strcpy(tnd.szTip,"提示信息");
Shell_NotifyIcon(NIM_ADD,&tnd);
3.手动添加了WM_POPMENU消息,创建消息响应函数OnPopmenu,创建IDI_TEST菜单资源
4.在OnPopmenu函数中添加如下代码:
if(wParam!=tnd.uID || (lParam!=WM_RBUTTONUP && lParam!=WM_LBUTTONDBLCLK))
{
return 0;
}
CMenu menu;
if(!menu.LoadMenu(tnd.uID))
{
return 0;
}

CMenu* pSubMenu=menu.GetSubMenu(0);

if(!pSubMenu)
{
return 0;
}

if(lParam==WM_RBUTTONUP)
{
::SetMenuDefaultItem(pSubMenu->m_hMenu,0,TRUE);
CPoint mouse;
GetCursorPos(&mouse);
::SetForegroundWindow(tnd.hWnd);
::TrackPopupMenu(pSubMenu->m_hMenu,0,mouse.x,mouse.y,0,tnd.hWnd,NULL);
}
...全文
48 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wodemuyecun 2008-10-09
  • 打赏
  • 举报
回复
我是新人~~~~~刚来CSDN不久,前一段时间发过一个关于SPI的帖子,没有得到回复,所以系统强迫结帖了.
直接造成我的结帖率是0 > <|||
qqwx_1986 2008-10-08
  • 打赏
  • 举报
回复
看你也不是新人了
结贴率实在不敢恭维

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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