我做一个监控软件,想在状态栏里添加图标,用来表示通讯状态,当正常时为红色图标,不正常时为黄色!

解决方案 »

  1.   

    你的意思是在托盘里加程序图标吧。int CAAADlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CDialog::OnCreate(lpCreateStruct) == -1)
    return -1;

    tnd.cbSize=sizeof(NOTIFYICONDATA);
    tnd.hWnd=this->m_hWnd;
    tnd.uID=IDR_MENU_POPUP;
    tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
    tnd.uCallbackMessage=WM_MYMESSAGE;
    tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
    strcpy(tnd.szTip,"AAA");
    Shell_NotifyIcon(NIM_ADD,&tnd); return 0;
    }
    void CAAADlg::OnMYMESSAGE(WPARAM wParam, LPARAM lParam)
    {
    CMenu menu,*pSubMenu;  if (::IsWindow(setdlg->GetSafeHwnd()))
    return; if(LOWORD(lParam)==WM_RBUTTONUP)
    {
    if(!menu.LoadMenu (tnd.uID )) return;
    if(!(pSubMenu = menu.GetSubMenu (0)))  return; CPoint pos;
    GetCursorPos(&pos); ::SetForegroundWindow (tnd.hWnd );
    ::TrackPopupMenu (pSubMenu->m_hMenu ,0,pos.x,pos.y,0,tnd.hWnd ,NULL);
    menu.DestroyMenu ();
    }
    else if(LOWORD(lParam)==WM_LBUTTONDBLCLK || LOWORD(lParam)==WM_LBUTTONDOWN )
    {
    OnTest(); } return; 
    }
    至于变化图标只要在需要的地方加
       tnd.hIcon =pApp->LoadIcon(IDI_MESSAGE);
       Shell_NotifyIcon(NIM_MODIFY,&tnd);
    就可以了。
      

  2.   

    http://www.vckbase.com/document/viewdoc/?id=1029
    类似做法
      

  3.   

    关键就是Shell_NotifyIcon的使用
      NIM_ADD,NIM_MODIFY参数