我把程序最小化在托盘区,然后,如何更新托盘区的图标,来表示不同的状态?怎样才可以更新那个小图标?谢谢

解决方案 »

  1.   

    SetTimer()设置一个定时器来改图标。
    参考下面的托盘编程部分
    http://www.vckbase.com/document/listdoc.asp?sclsid=1313
      

  2.   

    nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
    使用不同LoadIcon就可以了
    NOTIFYICONDATA nid;
    nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
    nid.hWnd=this->m_hWnd;
    nid.uID=IDI_ICON1;
    nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
    nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称
    nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
    strcpy(nid.szTip,"计划任务");//信息提示条为“计划任务提醒”
    Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
      

  3.   

    这是我的程序, 用八个图标显示状态
    void CBRKServer::DrawTrayLogo()
    {
    m_nLogoState++;
    if ( m_nLogoState > 7)
    m_nLogoState = 0; switch ( m_nLogoState )
    {
    case 0:
    theApp.m_TrayIcon.SetIcon(IDI_ICON8);
    break;
    case 1:
    theApp.m_TrayIcon.SetIcon(IDI_ICON1);
    break;
    case 2:
    theApp.m_TrayIcon.SetIcon(IDI_ICON2);
    break;
    case 3:
    theApp.m_TrayIcon.SetIcon(IDI_ICON3);
    break;
    case 4:
    theApp.m_TrayIcon.SetIcon(IDI_ICON4);
    break;
    case 5:
    theApp.m_TrayIcon.SetIcon(IDI_ICON5);
    break;
    case 6:
    theApp.m_TrayIcon.SetIcon(IDI_ICON6);
    break;
    case 7:
    theApp.m_TrayIcon.SetIcon(IDI_ICON7);
    break;
    } }
      

  4.   

    nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
    你可以把这个数据结构加到不同的事件中,象鼠标右键,然后加载不同的图标就可以了
      

  5.   

    SetTimer()然后调用
    Shell_NotifyIcon来修改图表
      

  6.   

    今天怎么这么多问托盘图标的呀
    刚刚用网上的一段代码回复人家的内容
    http://community.csdn.net/Expert/topic/3543/3543916.xml?temp=.3894617