头文件
protected:
HICON m_hIcon;
NOTIFYICONDATA m_tnid;
afx_msg LRESULT OnTrayMessage(WPARAM wParam, LPARAM lParam);
实现文件
ON_COMMAND(IDM_MENU_TRAY_SHOW_WINDOW, OnMenuTrayShowWindow)
ON_COMMAND(IDM_MENU_TRAY_EXIT, OnMenuTrayExit)
ON_MESSAGE(MYWM_NOTIFYICON, OnTrayMessage)
void CHYServerDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if (SC_MINIMIZE == nID || SC_CLOSE == nID)
{
ShowWindow(SW_HIDE);
return;
}
if (IDM_ABOUTBOX == (nID & 0xFFF0))
{
CAboutDlg dlgabout;
dlgabout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
LRESULT CHYServerDlg::OnTrayMessage(WPARAM wParam, LPARAM lParam)
{
if(WM_LBUTTONDBLCLK == lParam)
{
//鼠标双击时主窗口出现
ShowWindow(SW_SHOW);
}
else if(WM_RBUTTONDOWN == lParam)
{
//鼠标右键单击弹出选单
CMenu menu;
menu.LoadMenu(IDR_TRAY_RIGHT_MENU);
//载入事先定义的选单
CMenu* pMenu = menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos);
SetForegroundWindow();
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pos.x, pos.y, AfxGetMainWnd());
}
return 1;
}
void CHYServerDlg::OnMenuTrayShowWindow()
{
//---- TODO: Add your command handler code here
ShowWindow(SW_SHOW);
}
void CHYServerDlg::OnMenuTrayExit()
{
//---- TODO: Add your command handler code here
CDialog::OnOK();
}
int CHYServerDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
//---- TODO: Add your specialized creation code here
m_tnid.cbSize=sizeof(NOTIFYICONDATA);
m_tnid.hWnd=this->m_hWnd;
m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
m_tnid.uCallbackMessage=MYWM_NOTIFYICON;//用户定义的回调消息
CString szToolTip;
szToolTip=_T(VERSION_STRING);
_tcscpy(m_tnid.szTip, szToolTip);
m_tnid.uID=IDR_MAINFRAME;
HICON hIcon;
hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_tnid.hIcon=hIcon;
::Shell_NotifyIcon(NIM_ADD, &m_tnid);
if(hIcon)::DestroyIcon(hIcon);
return 0;
}
void CHYServerDlg::OnDestroy()
{
CDialog::OnDestroy();
::Shell_NotifyIcon(NIM_DELETE, &m_tnid);
//---- TODO: Add your message handler code here
}