NOTIFYICONDATA nid;
增加消息函數聲明,就放在其他很多的afx_msg系列函數壹起就行:
afx_msg void OnNotifyIcon(WPARAM, LPARAM);
2:在cpp中修改如下內容:
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
在以上內容段下面增加如下自定義消息定義
#define WM_NOTIFY_ICON WM_USER + 101
BEGIN_MESSAGE_MAP(CNotifyIconDlg, CDialog)
//{{AFX_MSG_MAP(CNotifyIconDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_NOTIFY_ICON, OnNotifyIcon) 在這段函數中增加這句消息映射
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
找到這段函數,並修改成這樣
void CNotifyIconDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
if (nID == SC_MINIMIZE)
{
ShowWindow(SW_HIDE);
ZeroMemory(&nid, sizeof(nid));
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
nid.hWnd = m_hWnd;
strcpy(nid.szTip, "提示信息");
nid.uCallbackMessage = WM_NOTIFY_ICON;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD, &nid);
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
}
cpp文件末尾增加如下函數:
void CNotifyIconDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
if (lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN)
{
ShowWindow(SW_SHOW);
}
}
這個函數通過編譯器的向導生成框架,並增加Shell_NotifyIcon這句
BOOL CNotifyIconDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
Shell_NotifyIcon(NIM_DELETE, &nid);
return CDialog::DestroyWindow();
}
以上是VC++6.0實現