日期:2014-05-19  浏览次数:20948 次

NotifyIcon 的BalloonTipClicked问题!
使用NotifyIcon显示气球提示,使用BalloonTipClicked()时发现不管是使用鼠标左键或右键点击气球都会引发改事件,有什么办法区分左右键,从而使左键点击则执行事件,右键点击则不执行?

------解决方案--------------------
BalloonTipClicked 的 e参数
------解决方案--------------------
LRESULT CnidDlg::OnBackGround(WPARAM wParam,LPARAM lParam)
{
//新建一个菜单资源,定义了在任务栏图标上点击右键和左键不同的动作
switch(lParam)
{
case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu* pSubMenu = menu.GetSubMenu(0);
::SetMenuDefaultItem(pSubMenu-> m_hMenu, 0, TRUE);
CPoint mouse;
GetCursorPos(&mouse);
::SetForegroundWindow(this-> m_hWnd);
::TrackPopupMenu(pSubMenu-> m_hMenu, 0, mouse.x, mouse.y, 0,
this-> m_hWnd, NULL);
break;
}
case WM_LBUTTONDBLCLK:
{
this-> ShowWindow(SW_SHOWNORMAL);
break;
}
}
return 0;
}

用MFC似乎简单一点,能区分左右键
------解决方案--------------------
如果你要用微软的那个 NotifyIcon 玩意是不行的。你可以考虑自己写一个 NotifyIcon,这样你自己处理消息事件,根据消息码自然知道是左键还是右键点击了 BallonTip。

不过,我印象中似乎最底层的 BallonTipClick 消息是没有区分鼠标到底是那个按钮点击了的。倒是对通知区的图标有所区分。