生成托盘图标
在CXXXDlg中定义成员函数NOTIFYICONDATA nid;
void CXXXDlg::Hiden()
{
nid.cbSize = sizeof(nid);
//NIF_MESSAGE表示发送控制消息
//NIF_ICON 表示显示控制栏中的托盘图标
//NIF_TIP 表示任务栏中的托盘图标有动态提示
nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
CString sztemp;
nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
_tcscpy(nid.szTip,_T("我的托盘图标"));
nid.uCallbackMessage = WM_USER + 200;
nid.uID = 10;
nid.hWnd = m_hWnd;
// Shell_NotifyIcon(NIM_DELETE,&nid);
Shell_NotifyIcon(NIM_ADD,&nid);
this->ShowWindow(SW_HIDE);
}
右键菜单,和左键双击还原
LRESULT CMidClientPlatFormDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
bool m_IsShow=false;
switch(message)
{
case WM_USER + 200: //如果是自定义消息出现,则执行下列动作
if(lParam == WM_LBUTTONDBLCLK)
{
if(!m_IsShow)
{
this->ShowWindow(SW_SHOWNORMAL);
BringWindowToTop();
m_IsShow = TRUE;
}
else
{
this->ShowWindow(SW_HIDE);
m_IsShow = FALSE;
}
}
if(LOWORD(lParam) == WM_RBUTTONDOWN)//装入右键菜单
{
CMenu menu;
menu.LoadMenu(IDR_MENU_SYS);
CMenu* pMenu = menu.GetSubMenu(0);
POINT pt;
GetCursorPos(&pt);
BringWindowToTop();
SetForegroundWindow();
pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this, NULL);
}
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}