窗口隐藏至通知区域
窗口隐藏至通知区域的主要代码:
void CM2sDlg::OnButtonM() 
{
 ShowWindow(SW_HIDE);
 //////////////////定义系统托盘///////////////////////////
 m_tnid.cbSize=sizeof(NOTIFYICONDATA);//设置结构大小//
 m_tnid.hWnd=this->m_hWnd;//设置图标对应的窗口
 m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;//图标属性
 m_tnid.uCallbackMessage=MYWM_NOTIFYICON;//应用程序定义的回调消息ID
 ////////////设置NOTIFYICONDATA结构///////////
 CString szToolTip;
 szToolTip=_T("隐藏至通知区域-程序");
 _tcscpy(m_tnid.szTip, szToolTip);//帮助信息
 m_tnid.uID=IDR_MAINFRAME;//应用程序图标
 HICON hIcon;
 hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
 m_tnid.hIcon=hIcon;//图标句柄
 PNOTIFYICONDATA m_ptnid=&m_tnid;
 ::Shell_NotifyIcon(NIM_ADD,m_ptnid);//增加图标到系统盘
 if(hIcon)::DestroyIcon(hIcon);
}
在窗口函数中处理鼠标点击通知区域图标(双击显示窗口,右击弹出菜单):
LRESULT CM2sDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
 switch(message)
 {
 case MYWM_NOTIFYICON:
   //如果是用户定义的消息
         if(lParam==WM_LBUTTONDBLCLK)
   {
    //鼠标双击时主窗口出现
    AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
   }
         else if(lParam==WM_RBUTTONDOWN)     //鼠标右键单击弹出选单
   { 
             CMenu menu;
             menu.LoadMenu(IDR_MENU1); //载入事先定义的选单
             CMenu *pMenu=menu.GetSubMenu(0);
             CPoint pos;
             GetCursorPos(&pos);
             pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());
   }
         break;
 case WM_SYSCOMMAND:
         //如果是系统消息
         break;
 }
 return CDialog::WindowProc(message, wParam, lParam);
}
ps:1.m_tnid是NOTIFYICONDATA结构体---Contains information that the system needs to process taskbar status area messages.
2.Shell_NotifyIcon---Sends a message to the taskbar's status area.添加或删除图标到通知区域等功能的函数。
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号