1、窗口关闭时消息的顺序是:
OnClose
OnCancel
OnDestroy
2、重载OnClose,当用户按X,或在系统菜单中“关闭”,或Alt_F4时,将窗口隐藏
void CsiphelloDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
ShowWindow(SW_HIDE);
}
3、将Esc按键过滤,以防用户按Esc键后程序退出。
BOOL CsiphelloDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
//过滤Esc按键
if(((pMsg->message == WM_KEYDOWN) || (pMsg->message == WM_KEYUP)) && (pMsg->wParam == VK_ESCAPE))
{
return TRUE;
}

return CDialog::PreTranslateMessage(pMsg);
}
4、写一个函数,以显示和删除托盘中的图标。
void CsiphelloDlg::ShowTray(BOOL bShow)
{
NOTIFYICONDATA nid;
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = this->m_hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage= WM_SHOWTRAY; //自定义的消息
//nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
nid.hIcon = m_hIcon;
wcscpy_s(nid.szTip,_T("hellosip"));
if (bShow)
Shell_NotifyIcon(NIM_ADD,&nid);
else
Shell_NotifyIcon(NIM_DELETE,&nid);
}
5、在OnShowWindow中调用ShowTray(TRUE),在托盘中增加图标,在OnDestroy中调用ShowTray(FALSE),将图标删除
6、处理图标上的消息WM_SHOWTRAY(自定义的消息)
BEGIN_MESSAGE_MAP(CsiphelloDlg, CDialog)
//其它的...
ON_WM_SHOWWINDOW()
ON_MESSAGE(WM_SHOWTRAY, OnTrayClicked) //这是处定义消息处理的
ON_WM_CLOSE()
ON_WM_DESTROY()
END_MESSAGE_MAP()

LRESULT CsiphelloDlg::OnTrayClicked(WPARAM wParam, LPARAM lParam)
{
//wParam是图标的ID
if(wParam != IDR_MAINFRAME)
return 1;

switch(lParam)
{
case WM_RBUTTONUP:
{

LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);//得到鼠标位置
CMenu menu; //弹出式菜单
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING, WM_DESTROY, _T("退出"));
menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y, this);

//资源回收
HMENU hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
}
break;
case WM_LBUTTONDBLCLK:
{
ShowWindow(SW_SHOW);
}
break;
}

return 0;
}
OnClose
OnCancel
OnDestroy
2、重载OnClose,当用户按X,或在系统菜单中“关闭”,或Alt_F4时,将窗口隐藏





3、将Esc按键过滤,以防用户按Esc键后程序退出。











4、写一个函数,以显示和删除托盘中的图标。
















5、在OnShowWindow中调用ShowTray(TRUE),在托盘中增加图标,在OnDestroy中调用ShowTray(FALSE),将图标删除
6、处理图标上的消息WM_SHOWTRAY(自定义的消息)








































