1。声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATA m_NotifyIcon;
2。声明一个响应函数afx_msg LRESULT OnClickTray(WPARAM wParam,LPARAM IParam);用于响应鼠标操作。
3、添加自定义消息:
#define WM_NOTIFY_MY WM_USER+0x10
4、void CDesktopUtilDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else if(nID ==SC_MINIMIZE )
{
NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);
NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
NotifyIcon.hWnd=m_hWnd;
lstrcpy(NotifyIcon.szTip,L"NotifyIcon Test");
NotifyIcon.uCallbackMessage=WM_CLICK_TRAY;
NotifyIcon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD,&NotifyIcon);
ShowWindow(SW_HIDE);
}
else
{
CDHtmlDialog::OnSysCommand(nID, lParam);
}
}
5、点击托盘图标响应事件:afx_msg LRESULT OnClickTray(WPARAM wParam,LPARAM IParam);功能是点击托盘图标的时候还原对话框程序,实现代码如下:
LRESULT CDesktopUtilDlg::OnClickTray(WPARAM wParam,LPARAM IParam)
{
if ((IParam == WM_LBUTTONDOWN) || (IParam == WM_RBUTTONDOWN))
{
ModifyStyleEx(0,WS_EX_TOPMOST);
ShowWindow(SW_SHOW);
}
return 0;
}