OnInitDialog()
{
   ......
   nd.cbSize = sizeof(NOTIFYICONDATA);
   nd.hWnd = m_hWnd;
   nd.uID = IDR_MAINFRAME;
   nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
   nd.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
   nd.uCallbackMessage = WM_SHELLNOTIFY;
   wcscpy(nd.szTip,_T("mydlg"));   Shell_NotifyIcon(NIM_ADD,&nd);
}
//NOTIFYICONDATA nd我定义在了头文件里,做为这个窗口的成员对像
//窗口初始化后成功在托盘里增加了图标.但是我想通过一个按钮更换托盘图标.如下:OnBtnClicket1()
{
        //Shell_NotifyIcon(NIM_DELETE, &nd);
nd.hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
nd.uID=IDI_ICON1;
nd.hWnd=m_hWnd;
      
Shell_NotifyIcon(NIM_MODIFY, &nd);}
//试过很多方法却始终不能修改图标,听别人说,先删掉图标,再修改.也不行.大家不知道有没有遇到这种情况

解决方案 »

  1.   

    OnBtnClicket1() 

            //Shell_NotifyIcon(NIM_DELETE, &nd); 
    nd.hIcon = AfxGetApp()->LoadIcon(IDI_ICON1); 
    nd.uID=IDI_ICON1; 
    nd.hWnd=m_hWnd; 
          
    Shell_NotifyIcon(NIM_MODIFY, &nd); } 调用错误
    nd.uID=IDI_ICON1;
    应该为(前一个相同)
      nd.uID = IDR_MAINFRAME; //为托盘区数据的ID,不是资源ID;
      

  2.   

    nd.uID=IDI_ICON1; 
    该为
    nd.uID = IDR_MAINFRAME; 
      

  3.   

    把下面这句注释掉,试试看:
    //nd.uID=IDI_ICON1;