我不知道怎样将程序运行后在任务栏右边的小图标上,俺很菜吧,请教各位啊,俺至少可以做个好学生的:)

解决方案 »

  1.   

    建立托盘图标
    NOTIFYICONDATA tnid;
    HICON hicon;
    hicon=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICONBEFORE));//载入ICON
    tnid.cbSize = sizeof(NOTIFYICONDATA);//NOTIFYICONDATA结构体大小
    tnid.hWnd = GetSafeHwnd();//接收通知消息的窗口句柄
    tnid.uID = DEMOICON;
    tnid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
    tnid.uCallbackMessage = TESTWM_NOTIFYICON;//用户自定义回调消息
    tnid.hIcon = hicon; //托盘图标句柄
    if (lpszTipBefore)
    lstrcpyn(tnid.szTip, lpszTipBefore, sizeof(tnid.szTip));//提示信息
    else
    tnid.szTip[0]='\0';
    Shell_NotifyIcon(NIM_ADD, &tnid);
    if (hicon)
    DestroyIcon(hicon);
    删除托盘图标
    NOTIFYICONDATA tnid;
    HICON hicon;
    hicon=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDR_MAINFRAME));
    tnid.cbSize = sizeof(NOTIFYICONDATA);
    tnid.hWnd = GetSafeHwnd();
    tnid.uID = DEMOICON;
    Shell_NotifyIcon(NIM_DELETE, &tnid);
    修改托盘图标
    NOTIFYICONDATA tnid;
    HICON hicon;
    hicon=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICONAFTER));
    tnid.cbSize = sizeof(NOTIFYICONDATA);
    tnid.hWnd = GetSafeHwnd();
    tnid.uID = DEMOICON;
    tnid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
    tnid.uCallbackMessage = TESTWM_NOTIFYICON;
    tnid.hIcon = hicon; 
    if (lpszTipAfter)
    lstrcpyn(tnid.szTip, lpszTipAfter,sizeof(tnid.szTip));
    else
    tnid.szTip[0]='\0';
    Shell_NotifyIcon(NIM_MODIFY, &tnid);
    DestroyIcon(hicon);
    回调消息处理
    OnTestNotifyIcon(WPARAM wParam,LPARAM lParam)
    {
    switch(lParam)
    {
    case WM_LBUTTONDBLCLK:
    if(wParam==DEMOICON)
    {
    ShowWindow(SW_SHOW);//显示主窗口
    }
    break;
    case WM_RBUTTONDOWN:
    if(wParam=DEMOICON)
    {
    CMenu *pm1,m2;
    CPoint pp(LOWORD(lParam),HIWORD(lParam));
    m2.LoadMenu(IDR_MENU1);
    pm1=m2.GetSubMenu(0);
    ClientToScreen(&pp);
    pm1->TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON,pp.x,GetSystemMetrics(SM_CYSCREEN)-50,this);
    //显示菜单IDR_MENU1
    }
    break;
    default:
    break;
    }
    return 0L;
    }
      

  2.   

    参见http://www.csdn.net/cnshare/soft/12/12414.shtm
    那个程序不错,完全符合你的要求!