在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现:
NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
NotifyIcon.hWnd=m_hWnd;
lstrcpy(NotifyIcon.szTip,"NotifyIcon Test");
NotifyIcon.uCallbackMessage=WM_NC;
NotifyIcon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD,&NotifyIcon);
{
if ((IParam == WM_LBUTTONDOWN) || (IParam == WM_RBUTTONDOWN))
{
ModifyStyleEx(0,WS_EX_TOPMOST);
ShowWindow(SW_SHOW);
//Shell_NotifyIcon(NIM_DELETE, &NotifyIcon);
}
}
最小化 SIZE_MINIMIZED,
最大化 SIZE_MAXIMIZED,
还原 SIZE_RESTORED,
例如:
void CMainDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
//::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);
if (nType== SIZE_MAXIMIZED)
{
//在这里添加最小化需要处理的事件
// ::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);
}
if (nType==SIZE_RESTORED)
{
//在这里添加还原时需要处理的事件
// ::SendMessage(g_hMain,WM_FORM_RESIZE,0,0);
}
}
方法二
在OnSysCommand中处理
nID = SC_MAXIMIZE 是最大化
nID = SC_MINIMIZE 是最小化