PCVC请进来
你的那个托盘菜单问题解决如下:
在SystemTray::OnTrayNotification(UINT wParam,LONG lParam)
{
.....
BCMenu menu;
if (LOWORD(lParam) == WM_RBUTTONUP)
{
POINT point;
GetCursorPos(&point);
menu.LoadMenu(IDR_MENU);
menu.ModifyODMenu(NULL, IDM_NEW,IDB_BMP_1);
menu.ModifyODMenu(NULL,IDM_OPEN,IDB_BMP_2);
menu.ModifyODMenu(NULL,IDM_WZFX,IDB_BMP_3);
menu.ModifyODMenu(NULL,IDM_HT,IDB_BMP_4);
menu.ModifyODMenu(NULL,IDM_LINK,IDB_BMP_5);
menu.ModifyODMenu(NULL,IDM_WEB,IDB_BMP_6);
menu.ModifyODMenu(NULL,IDM_EXIT,IDB_BMP_7);
BCMenu *psub = (BCMenu *)menu.GetSubMenu(0);
psub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
....
}
另外这样改动以后,程序不能退出,因为这时菜单消息是发给CSystemTray的窗口的,而不是发给CMainWnd窗口的,从你的程序可以看出来,所以还需在CSystemTray里面加上消息映射,我只加了一个退出函数如下:
BEGIN_MESSAGE_MAP(CSystemTray, CWnd)
//{{AFX_MSG_MAP(CMainWnd)
ON_COMMAND(IDM_EXIT, OnExit)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CSystemTray::OnExit()
{
// TODO: Add your command handler code here
((CMainWnd *)(AfxGetApp()->m_pMainWnd))->DestroyWindow();
RemoveIcon();
}
你也可以照此加入其它的菜单项的处理函数,再加上相应头文件,OK了