议题提交:hack988
信息来源:邪恶八进制信息安全团队
各位程序高手好:
小弟遇到一点问题。我用VC++编完了程序,最后单击最小化框想将它的图标放到Status area(系统托盘)中去,我看过MSDN,事实上也办到了,问题是不知道该怎样响应鼠标消息,MSDN上说用WM_CONTEXTMENU、WM_RBUTTONUP 消息,但参数
(WPARAM wParam,LPARAM lParam) 与 系统默认的(UINT nFlags, CPoint point)
不同,系统无法编译,我看过一些程序片段,比如
复制内容到剪贴板
代码:
void On_MYWM_NOTIFYICON(WPARAM wParam, LPARAM lParam)
{
UINT uID;
UINT uMouseMsg;
uID = (UINT) wParam;
uMouseMsg = (UINT) lParam;
if (uMouseMsg == WM_LBUTTONDOWN)
{
switch (uID)
{
case IDI_MYBATTERYICON:
// The user clicked the battery icon. Display the
// battery status.
ShowBatteryStatus();
break;
case IDI_MYPRINTERICON:
// The user clicked the printer icon. Display the
// status of the print job.
ShowJobStatus();
break;
default:
break;
}
}
return;
}但WINDOWS没有这样的一个消息。现在我需要响应我自己的消息
复制内容到剪贴板
代码:
LRESULT CHDSMSDlg::On_MYWM_NOTIFYICON(WPARAM wParam,LPARAM lParam)
{
if(WM_CONTEXTMENU == lParam||WM_RBUTTONDOWN == lParam)
{
CPoint pt;
::GetCursorPos(&pt);
SetForegroundWindow();
m_menuTray.GetSubMenu(0)->TrackPopupMenu(0,pt.x,pt.y,this);
}
else if(WM_LBUTTONDBLCLK == lParam)
{
ShowWindow(SW_SHOW);
SetForegroundWindow();
Shell_NotifyIcon(NIM_DELETE,&m_nid);
}
return 0;
}我应该怎么做,请大家教我,谢谢!