mfc的menu确是不如C#活着java那么easy..
首先在rc里添加menu资源。。然后在ui界面里先设置一下你的菜单。。
在第(二)部分已经简单知道了怎么取得tray的鼠标左右点击事件。。下面我们就把左右点击事件分开。。
1
LRESULT CDesktopDlg::OnNotifyIcon(WPARAM wParam,LPARAM lParam)2


{3
switch (lParam)4

{5
case WM_LBUTTONDOWN:6
// 切换dialog状态。。7
if (dialogStatus)8

{9
dialogToTray();10
}11
else12

{13
trayToDialog();14
}15
break;16

17
case WM_RBUTTONDOWN:18
// 添加menu19
CMenu pMenu; 20

21
if (pMenu.LoadMenu(IDR_MENU1)) // IDR_MENU1就是我们添加的menu的id22

{23
CMenu* pPopupMenu = pMenu.GetSubMenu(0);24
ASSERT(pPopupMenu != NULL); 25
CPoint point; 26
GetCursorPos(&point);27
SetForegroundWindow();28

29
pPopupMenu->TrackPopupMenu(30
TPM_LEFTALIGN | TPM_RIGHTBUTTON,31
point.x, point.y, this);32
}33
break;34
}35

36
return 0;37
}ok,测试一下发现菜单运行良好。。不过这里还有个问题我有点疑问。。不知道是不是只有我的电脑有这个问题。。我在点右键的时候有一定概率把任务栏的那个菜单点出来。。不知道问什么。。
我们继续。
菜单是出来了。。下面开始添加事件。。
// .h
afx_msg BOOL OnCommand(WPARAM wParam, LPARAM lParam);// .cpp
BOOL CDesktopDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
switch (wParam)
{
// 这几个id是在rc里面定义的。。
case ID_TRAYMENU_32771:
trayToDialog();
break;
case ID_TRAYMENU_32772:
dialogToTray();
break;
case ID_TRAYMENU_32773:
OnExit();
break;
case ID_TRAYMENU_32774:
showAboutDlg();
break;
// 添加这个command之后。。原来的button事件不管用了。。
// 经测试在这里好用。。原因不明。。
case IDOK:
OnBnClickedOk();
break;
case IDCANCEL:
OnBnClickedCancel();
break;
}
return true;
}
ok..现在再运行一下。。可以菜单就可以用了。。
下面来添加一下小气球的提示。。其实很简单。。写一个方法:
1
BOOL CDesktopDlg::ShowBalloonTip(LPCTSTR szMsg,LPCTSTR szTitle, UINT uTimeout, DWORD dwInfoFlags)2


{3

4
m_notifyIcon.cbSize=sizeof(NOTIFYICONDATA);5
m_notifyIcon.uFlags = NIF_INFO;6
m_notifyIcon.uTimeout = uTimeout;7
m_notifyIcon.dwInfoFlags = dwInfoFlags;8
strcpy(m_notifyIcon.szInfo,szMsg ? szMsg : _T(""));9
strcpy(m_notifyIcon.szInfoTitle,szTitle ? szTitle : _T(""));10

11
return Shell_NotifyIcon(NIM_MODIFY, &m_notifyIcon);12
} 然后在init的时候或者任何你需要的时候调用就可以了。。但是气球还是不要用太多为好。。或者像msn似的。。添加一下鼠标点击事件。。然后下回就再也不自动提示了。。当然这个可能就要借助注册表了。。
这四部份实际上是为了完成一个叫做女巫店 - 每周运程的一个小东东。。也是我第一次做mfc程序。。感觉还挺简单的。。程序分享出来吧。。就是通过网络连接nownow的女巫店。。然后读取rss文件(nownow..我要向你抗议。。你现在的文件格式我很难解析。。)。。然后到本地显示。。方便查询。。
ps.附上这个小东西。。顺便支持一下nownow。。你弄得这玩意太准了。。够意思的话一定要教教我。。嘿嘿。。
女巫店-桌面版
ok,关于托盘程序的mfc就此告一段落。。尽管写的很颓。。就这样吧。。:)






