void ::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{// 响应在托盘图标上的单击
if ((wParam == IDR_MAINFRAME)&&(lParam == WM_LBUTTONDOWN))
{
TRACE("11\n");
CMenu menu;
CMenu* pPopup = NULL;
menu.LoadMenu(IDR_MENU_STOCK);
pPopup =menu.GetSubMenu(0);
CPoint pt ;
::GetCursorPos(&pt);
TRACE("%d:%d\n",pt.x,pt.y);
ASSERT(pPopup != NULL); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y,
this);
}
}
///删除托盘图标, NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=m_hWnd;
tnid.uID=IDR_MAINFRAME;//保证删除的是我们的图标
Shell_NotifyIcon(NIM_DELETE,&tnid);
{// 响应在托盘图标上的单击
if ((wParam == IDR_MAINFRAME)&&(lParam == WM_LBUTTONDOWN))
{
TRACE("11\n");
CMenu menu;
CMenu* pPopup = NULL;
menu.LoadMenu(IDR_MENU_STOCK);
pPopup =menu.GetSubMenu(0);
CPoint pt ;
::GetCursorPos(&pt);
TRACE("%d:%d\n",pt.x,pt.y);
ASSERT(pPopup != NULL); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y,
this);
}
}
///删除托盘图标, NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=m_hWnd;
tnid.uID=IDR_MAINFRAME;//保证删除的是我们的图标
Shell_NotifyIcon(NIM_DELETE,&tnid);
解决方案 »
- VC++ MFC Button 显示图片的问题:
- 我的OpenCV文件里怎么找不到ml.lib文件
- 请问:智能指针是怎么回事,功能与用法具体介绍介绍,好吗?
- ReadFile()中的参数nNumberOfBytesToRead大小有限制吗?
- 怎么掉用 AFX DLL 中的一个类啊???
- 升了一颗小星星,散分~~~
- 我在一个FormView中,添加了一个树形控件,想通过调用函数,更新数据?
- 问:有哪个高人能给我解释一下形态矩阵在图像中的作用,谢谢!!
- 请问如何锁定键盘和鼠标?(内空)
- 在一个窗口显示完成以后需要获得一个消息(类似VB的ACTIVATE)
- 请问如何手动将状态栏刷新一次?
- 郁闷死了啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{// 响应在托盘图标上的单击
if ((wParam == IDR_MAINFRAME)&&(lParam == WM_LBUTTONDOWN))
{
//加上这句话
::SetForegroundWindow(m_hWnd); TRACE("11\n");
CMenu menu;
CMenu* pPopup = NULL;
menu.LoadMenu(IDR_MENU_STOCK);
pPopup =menu.GetSubMenu(0);
CPoint pt ;
::GetCursorPos(&pt);
TRACE("%d:%d\n",pt.x,pt.y);
ASSERT(pPopup != NULL); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y,
this);
}
}
这个解决了,谢谢newsb(newsb) 2 dwState = NIS_HIDDEN
好象是将图标隐藏啊?不是删除?
tnd.cbSize = sizeof(NOTIFYICONDATA);
tnd.hWnd = this->m_hWnd;
tnd.uID = IDR_MAINFRAME;
tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage = WM_TRAYMESSAGE;
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
ZeroMemory(tnd.szTip, sizeof(tnd.szTip));
_tcscpy(tnd.szTip, _T("tip")); //改成你自己的名称
Shell_NotifyIcon(NIM_DELETE,&tnd);//向任务栏添加图标
重载框架类的ONCLOSE消息
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=this->m_hWnd;
tnid.uID=IDR_MAINFRAME;//保证删除的是我们的图标
Shell_NotifyIcon(NIM_DELETE,&tnid);
//退出程序
AfxPostQuitMessage(0);
CFrameWnd::OnClose();
}
nd.cbSize = sizeof (NOTIFYICONDATA);
nd.hWnd = m_hWnd;
nd.uID = IDR_MAINFRAME;
nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nd.uCallbackMessage = WM_NOTIFYICON;
nd.hIcon = m_hIcon;
strcpy(nd.szTip, "SoftPhone");
Shell_NotifyIcon(NIM_ADD, &nd);
我都实验成功了,你的怎么会没刷新呢?
一个是你删除的代码,没有任何问题,是不是你系统的原因?Ps: 我是Windows 2000, VC6, sp5
#define WM_MY_MSG WM_USER +1000
void CMainFrame::OnMyMsg(WPARAM wparam,LPARAM lparam )
{
UINT uID=(UINT) wparam;
UINT uMouseMsg=(UINT) lparam;
switch (uMouseMsg )
{
case WM_RBUTTONUP:
{
if (uID ==IDR_MAINFRAME)
{
CMenu menu;
menu.LoadMenu (IDR_MENU1);
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
// ShowCursor(true);
menu.GetSubMenu (0)->TrackPopupMenu (TPM_LEFTALIGN,pt.x ,pt.y ,this);
}
}
break;
default :
break;
}
}
然后修改你上面的代码:
nid.uCallbackMessage =WM_MY_MSG;
.....
Shell_NotifyIcon(NIM_ADD, &nd);
this->ShowWindow(SW_SHOWNOACTIVATE);
我的: [email protected]
谢谢了!
也给我一份吧
to:jag1976(明天)
我不大上MSN的,你给个邮箱,我发给你,[email protected]好象接收不到哦