mfc托盘图标右击出错
LRESULT CAudioProDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
//托盘图标
switch(message)
{
case MYWM_NOTIFYICON:
if (lParam == WM_LBUTTONDOWN)
{
//单击左键响应
if (isShow)
{
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
isShow = false;
}
else
{
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
isShow = true;
}
}
if (lParam == WM_RBUTTONDOWN)//右击托盘菜单
{
//单击右键响应
CMenu menu;
menu.LoadMenu(IDR_MAINMENU);
CMenu* pMenu = menu.GetSubMenu(1);
CPoint pos;
GetCursorPos(&pos);
SetForegroundWindow();
pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());
//PostMessage(WM_NULL,0,0);
}
break;
default:
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
[解决办法]
怎么发了2帖啊?
你先自己断点下,出错位置。不然很难定位
下面是个成功的例子
LONG OnNotifyIcon(WPARAM wParam, LPARAM lParam);//定义函数响应鼠标右键单击
ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)//手工添加消息映射 WM_NOTIFYICON为创建托盘时用到的宏#define WM_NOTIFYICON WM_USER+5
IconData.cbSize = sizeof (NOTIFYICONDATA);
IconData.hWnd = m_hWnd;
IconData.uID = IDR_MAINFRAME;
IconData.uFlags = NIF_ICON
[解决办法]
NIF_MESSAGE
[解决办法]
NIF_TIP;
IconData.uCallbackMessage = WM_NOTIFYICON;
IconData.hIcon = m_hIcon;
strcpy(IconData.szTip,"托盘信息");
Shell_NotifyIcon(NIM_ADD,&IconData);
LONG CStockIconDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
switch ( lParam )// The backdrop icon sent us a message. Let's see what it is
{
case WM_RBUTTONDOWN:
{// 用户在托盘图标上单击鼠标右键,弹出菜单
CMenu pMenu;
if (pMenu.LoadMenu(IDR_MENU1))
{
CMenu* pPopup = pMenu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CPoint Point;
GetCursorPos( &Point );
SetForegroundWindow();
pPopup->TrackPopupMenu(
TPM_LEFTALIGN
[解决办法]
TPM_RIGHTBUTTON,
Point.x, Point.y, this);
}
}
break;
case WM_LBUTTONDBLCLK:
case WM_LBUTTONDOWN:
break;
}