MFC 托盘操作,最大最小化窗口

添回消息函数

.h文件中

 //{{AFX_MSG(CMainFrame)

 afx_msg void OnSysCommand(WPARAM wParam,LPARAM lParam);
 //}}AFX_MSG

.cpp文件中

//{{AFX_MSG_MAP(CMainFrame)

ON_WM_SYSCOMMAND()
 //}}AFX_MSG_MAP

 

 

2.消息函数具体过程

void  CMainFrame::OnSysCommand(UINT nID,   LPARAM   lParam)  
{  
     switch(nID)
    {
         case SC_MINIMIZE:
         {
               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_SHOWTASK;//自定义的消息名称
               nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
               strcpy(nid.szTip,"系统名称");//信息提示条,任务栏中鼠标放上去后显示 
               Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标 
               ShowWindow(SW_HIDE);//隐藏主窗口
               break;  
       }
       case SC_MAXIMIZE:
      {
              ShowWindow(SW_SHOWMAXIMIZED);
              break; 
      }
      case SC_RESTORE:
     {
             ShowWindow(SW_RESTORE);
             break;
     }
     case SC_CLOSE:
     {

              NOTIFYICONDATA   tnid;            //清除托盘图标
            tnid.cbSize=sizeof(NOTIFYICONDATA);  
            tnid.hWnd=this->m_hWnd;  
              tnid.uID=IDR_MAINFRAME;   
               Shell_NotifyIcon(NIM_DELETE,&tnid);
             CMDIFrameWnd::OnClose();
             break;
     }
     default:
     CFrameWnd::OnSysCommand(nID,   lParam);      //未处理消息,默认系统
   }
}

你可能感兴趣的:(MFC 托盘操作,最大最小化窗口)