
void CNetChatClientDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if (SC_MINIMIZE == nID)
{
NOTIFYICONDATA nid;
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = this->m_hWnd;
nid.uID = IDD_DLG_CLIENT;
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage = NOTIFY_SHOW;//自定义的消息名称
nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDD_DLG_CLIENT));
wcscpy_s(nid.szTip, _T("Client"));//信息提示条
Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
ShowWindow(SW_HIDE);//隐藏主窗口
return;
}
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
LRESULT CNetChatClientDlg::OnTrayIcon(WPARAM wParam, LPARAM lParam)
{
if (wParam != IDD_DLG_CLIENT)
{
return 1;
}
switch(lParam)
{
case WM_RBUTTONUP: //右键起来时弹出快捷菜单,这里只有一个“关闭”
{
//声明一个弹出式菜单
//增加菜单项“关闭”,点击则发送消息WM_CLOSE给主窗口(已隐藏),将程序结束。
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING, ID_APP_EXIT, _T("退出"));
//得到鼠标位置
LPPOINT lpoint= new tagPOINT;
::GetCursorPos(lpoint);
//确定弹出式菜单的位置
menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y,this);
//资源回收
HMENU hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
lpoint = NULL;
break;
}
case WM_LBUTTONDBLCLK://双击左键的处理
{
//显示界面
ShowWindow(SW_SHOW);
//界面置顶
SetForegroundWindow();
break;
}
}
return 0;
}