你要用到Shell_TrayIcon()函数。他需要一个参数,他是一个结构的地址,这个结构中的一个成员就是一个消息,这个消息需要你自己定义。具体信息清查阅msdn

解决方案 »

  1.   


    是不是这样:
    NOTIFYICONDATA xxxx;
    ....
    xxxx.uCallbackMessage=WM_LBUTTONDBLCLK;
    .....不行呀。我就是这样用的。
    我不是往系统区里面加图标。而是问加完了怎么让他响应消息??帮帮忙很急的
      

  2.   

    MSDN里没你说的这个函数呀。是Shell_NotifyIcon()吧??
      

  3.   

    #define WM_SHELLNOTIFYICON  (WM_USER + 100)void FillNotifyICONData(DWORD dwMessage)
    {
        NOTIFYICONDATA  NIData;    ZeroMemory((PVOID)&NIData, 0);
        NIData.cbSize = sizeof(NOTIFYICONDATA);
        NIData.hWnd = g_hServiceWndHandle;
        NIData.uID = YOURIDI;
        NIData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
        NIData.uCallbackMessage = WM_SHELLNOTIFYICON;
        NIData.hIcon = LoadIcon(g_handle, MAKEINTRESOURCE(YOURIDI));
        strcpy(NIData.szTip , "some message");
    if((dwMessage == NIM_ADD) && (!g_bTaskBarICON) && (Shell_NotifyIcon(NIM_ADD, &NIData)))
    g_bTaskBarICON = TRUE;
        if(dwMessage == NIM_DELETE && g_bTaskBarICON && (Shell_NotifyIcon(NIM_DELETE, &NIData)))
    g_bTaskBarICON = FALSE;
    return;
    }
    WinProc()
    {
    case WM_USER + 100:
            if((UINT)lParam == WM_LBUTTONUP || (UINT)lParam == WM_RBUTTONUP)
            {
                if(GetActiveWindow() != g_hServiceWndHandle)
                {
                    SetForegroundWindow(g_hServiceWndHandle);
                    PostMessage(hWnd, message, wParam, lParam);
                }
                else 
    ShowTaskBarIconMenu();
            }
            break;
    }大概是这样,变量你自己注意一下.