各位我的程序退出后 在托盘的icon 不能及时destroy 是怎么回事  该怎么处理呢

解决方案 »

  1.   

    void CxxxDlg::OnDestroy() 
    {
    CDialog::OnDestroy();

    // TODO: Add your message handler code here
             Shell_NotifyIcon(NIM_DELETE, &trayIcon);
    }
      

  2.   

    NOTIFYICONDATA tnid;
    tnid.cbSize=sizeof(NOTIFYICONDATA);
    tnid.hWnd=this->m_hWnd;
    tnid.uID=IDR_MAINFRAME;//保证删除的是我们的图标
    Shell_NotifyIcon(NIM_DELETE,&tnid);
      

  3.   

    我遇到过同样的问题:程序关闭的时候,托盘区域的图标不能马上消失,而是要鼠标在上面过一下图标才会消失,后来这个问题解决了,就是下面这段代码,希望对你有所帮助:
    void CHUAWEI1Dlg::OnCancel() 
    {
    // TODO: Add your control notification handler code here
        
    /////////////////////////////////////////////////////
    // 关闭程序的时候,关闭系统托盘区域的图标
    /////////////////////////////////////////////////////
    NOTIFYICONDATA nd;
             nd.cbSize = sizeof (NOTIFYICONDATA);
             nd.hWnd = m_hWnd;
             nd.uID = IDI_ICON;
             nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
             nd.uCallbackMessage = WM_NOTIFYICON;
             nd.hIcon = m_hIcon;
             Shell_NotifyIcon(NIM_DELETE, &nd);
             CDialog::OnCancel();

    ///////////////////
    // 结束添加
    ///////////////////
    }
      

  4.   

    http://community.csdn.net/Expert/topic/3478/3478029.xml?temp=.9445917