NOTIFYICONDATA icondata;
char   buf[128];  
char   buf1[64];  
char   buf2[256];   memset(&icondata,0,sizeof(icondata));      
//将结构icondata的各域初始化为0
icondata.cbSize=sizeof(icondata);      
icondata.hWnd=hWnd;
memset(buf,0,128);  
strcpy_s(buf,"Sprit");   
MultiByteToWideChar(CP_THREAD_ACP,MB_USEGLYPHCHARS,buf,strlen(buf),icondata.szTip,128);    icondata.hIcon =hiTray;
icondata.uCallbackMessage=iconmessage;
icondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;

Shell_NotifyIcon(NIM_ADD, &icondata); // 气球提示
icondata.cbSize=sizeof(icondata);   
icondata.uFlags = NIF_INFO;
memset(buf1,0,64); 
memset(buf2,0,256); 
strcpy_s(buf1,"Sprit");
strcpy_s(buf2,"信息在这里");
MultiByteToWideChar(CP_THREAD_ACP,MB_USEGLYPHCHARS,buf1,strlen(buf1),icondata.szInfoTitle,64);   
MultiByteToWideChar(CP_THREAD_ACP,MB_USEGLYPHCHARS,buf2,strlen(buf2),icondata.szInfo,256);
icondata.dwInfoFlags = NIIF_INFO;
icondata.uTimeout = 3000;
Shell_NotifyIcon(NIM_MODIFY, &icondata);代码如上,可以正常显示托盘图标,但是无法显示气球,请高手指教~

解决方案 »

  1.   

    icondata.cbSize=sizeof(icondata);  
    icondata.uFlags = NIF_INFO; 
    icondata.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP|NIF_INFO;
    memset(buf1,0,64); 
    memset(buf2,0,256); 
    strcpy_s(buf1,"Sprit"); 
    strcpy_s(buf2,"信息在这里"); 
      

  2.   

    托盘气泡实现,要更改NOTIFYICONDATA结构体
    http://www.vckbase.com/document/viewdoc/?id=498
    参考下
      

  3.   

    谢谢,这个之前已经看过了,但是也看不出我该怎么修改原来的程序。我的系统关于NOTIFYICONDATA的定义如下:typedef struct _NOTIFYICONDATAW {
        DWORD cbSize;
        HWND hWnd;
        UINT uID;
        UINT uFlags;
        UINT uCallbackMessage;
        HICON hIcon;
    #if (NTDDI_VERSION < NTDDI_WIN2K)
        WCHAR  szTip[64];
    #endif
    #if (NTDDI_VERSION >= NTDDI_WIN2K)
        WCHAR  szTip[128];
        DWORD dwState;
        DWORD dwStateMask;
        WCHAR  szInfo[256];
        union {
            UINT  uTimeout;
            UINT  uVersion;  // used with NIM_SETVERSION, values 0, 3 and 4
        } DUMMYUNIONNAME;
        WCHAR  szInfoTitle[64];
        DWORD dwInfoFlags;
    #endif
    #if (NTDDI_VERSION >= NTDDI_WINXP)
        GUID guidItem;
    #endif
    #if (NTDDI_VERSION >= NTDDI_LONGHORN)
        HICON hBalloonIcon;
    #endif
    } NOTIFYICONDATAW, *PNOTIFYICONDATAW;-------
    #ifdef UNICODE
    typedef NOTIFYICONDATAW NOTIFYICONDATA;
    typedef PNOTIFYICONDATAW PNOTIFYICONDATA;
    #else
    typedef NOTIFYICONDATAA NOTIFYICONDATA;
    typedef PNOTIFYICONDATAA PNOTIFYICONDATA;
    #endif // UNICODE
      

  4.   

    NIF_INFO
      使用气球提示代替普通的工具提示框。szInfo, uTimeout, szInfoTitle和dwInfoFlags成员起作用。你后面几个没实现啊
      

  5.   

    可以发代码给我么?谢谢~ [email protected]
      

  6.   

    就是用你的代码。
    [email protected] 你把你的代码发给我看看,我用你上面的代码试过,是可以的
      

  7.   

    头文件加上
    #define   _WIN32_IE   0x0600
    m_nData.cbSize=sizeof(NOTIFYICONDATA); 
    m_nData.hWnd=GetDlgItem(hwndDlg,IDC_USERNAME); 
    m_nData.uFlags=NIF_MESSAGE|NIF_TIP|NIF_INFO|NIF_ICON|NIS_SHAREDICON|NIIF_WARNING; 
    m_nData.uCallbackMessage=NULL; 
    m_nData.uID=NULL; 
    m_nData.hIcon=hIcon;
    strcpy_s(m_nData.szInfo,255,"直接把执行程序拖入到文本框即可!");
    strcpy_s(m_nData.szInfoTitle,63,"提示"); 
    strcpy_s(m_nData.szTip,127,"直接把执行程序拖入到文本框即可!");
    m_nData.uTimeout=2000;
    m_nData.uVersion=NULL;
    m_nData.dwStateMask=0;
      

  8.   

    看下这个,也许对你有帮助http://www.phpat.com/disp-9-1584.html
      

  9.   


    http://www.phpat.com/disp-9-1584.html
      

  10.   

    你这代码我测试过,没有问题的。环境VS2005 ,Unicode....
      

  11.   

    http://topic.csdn.net/u/20081226/15/ec5775b6-6924-4c2b-aa4f-e3e44965602a.html
      

  12.   

    不弹出气泡的问题在targetver.h头文件中
    将0x0600都改成0x0501 ,如下所示:#pragma once// 以下宏定义要求的最低平台。要求的最低平台
    // 是具有运行应用程序所需功能的 Windows、Internet Explorer 等产品的
    // 最早版本。通过在指定版本及更低版本的平台上启用所有可用的功能,宏可以
    // 正常工作。// 如果必须要针对低于以下指定版本的平台,请修改下列定义。
    // 有关不同平台对应值的最新信息,请参考 MSDN。
    #ifndef WINVER                          // 指定要求的最低平台是 Windows Vista。
    #define WINVER 0x0501           // 将此值更改为相应的值,以适用于 Windows 的其他版本。
    #endif#ifndef _WIN32_WINNT            // 指定要求的最低平台是 Windows Vista。
    #define _WIN32_WINNT 0x0501     // 将此值更改为相应的值,以适用于 Windows 的其他版本。
    #endif#ifndef _WIN32_WINDOWS          // 指定要求的最低平台是 Windows 98。
    #define _WIN32_WINDOWS 0x0410 // 将此值更改为适当的值,以适用于 Windows Me 或更高版本。
    #endif#ifndef _WIN32_IE                       // 指定要求的最低平台是 Internet Explorer 7.0。
    #define _WIN32_IE 0x0700        // 将此值更改为相应的值,以适用于 IE 的其他版本。
    #endif