1.定义单击托盘图标时,窗口所收到的消息
    #define WM_NOTIFYICON   WM_USER+5
 
2.在OnInitDialog()或其他入口函数中添加图标
    // 将图标放入系统托盘
    NOTIFYICONDATA nd;
    nd.cbSize = sizeof (NOTIFYICONDATA);
    nd.hWnd = m_hWnd;
    nd.uID = IDR_MAINFRAME;
    nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
    nd.uCallbackMessage = WM_NOTIFYICON;
    nd.hIcon = m_hIcon;//使用的图标
    strcpy(nd.szTip, "Tips");
    Shell_NotifyIcon(NIM_ADD, &nd);
 
3.在OnClose()或其他出口函数中删除图标
    NOTIFYICONDATA nd;
    nd.cbSize   = sizeof (NOTIFYICONDATA);
    nd.hWnd = m_hWnd;
    nd.uID = IDR_MAINFRAME;   
    Shell_NotifyIcon(NIM_Delete,&nd);
 
4.添加点击托盘图标时的消息映射
    ·ON_MESSAGE(WM_NOTIFYICON,OnNotifyIcon)
 
    ·afx_msg LRESULT OnNotifyIcon(WPARAM wParam, LPARAM lParam);
 
    ·LRESULT CXXXXDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
         {
    // 响应在托盘图标上的单击
    if ((wParam == IDR_MAINFRAME)&&(
         lParam == WM_LBUTTONDBLCLK ||
         lParam == WM_RBUTTONDOWN))
    {      
        this->ShowWindow(SW_SHOW);
        this->SetWindowPos(&wndTop,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
    }
 
    return 0;
}
 
5.添加最小化时的消息映射
·ON_WM_SYSCOMMAND()
 
·afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
 
·void CAutoCjolDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
     if ((nID&0xFFF0) == SC_MAXIMIZE)
         return;
     if ((nID&0xFFF0) == SC_MINIMIZE)
         this->ShowWindow(SW_HIDE);
     else
         CWnd::OnSysCommand(nID, lParam);
} 

  6.发送消息使窗体最小化
  PostMessage(WM_SYSCOMMAND,SC_MINIMIZE);
 
  7.更多信息,请参看MSDN

本文链接地址: 系统托盘图标编程指南
https://blog.qingfengju.com/index.asp?id=102

上一篇: 生成随机数
下一篇: MFC学习笔记之1:a.文档和视图

分类:Win32/C++ 查看次数:6302 发布时间:2009/7/2 9:38:49