1:在XXXDlg.h中增加成员变量 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实现
转自:http://zhidao.baidu.com/question/407656694.html