我上网找了用NOTIFYICONDATA 结构可以实现,但在我电脑上编译的时候老是提示NOTIFYICONDATA 没有定义utimeout等这些变量,好象NOTIFYICONDATA 结构有新旧版本,请问要怎么样才能调用最新版本的呢?
这个好象只有1.5版本以上的才支持气泡提示功能.谢谢各位了!

解决方案 »

  1.   

    typedef struct _NOTIFYICONDATA {
        DWORD cbSize;
        HWND hWnd;
        UINT uID;
        UINT uFlags;
        UINT uCallbackMessage;
        HICON hIcon;
        TCHAR szTip[64];
        DWORD dwState;
        DWORD dwStateMask;
        TCHAR szInfo[256];
        union {
            UINT uTimeout;
            UINT uVersion;
        };
        TCHAR szInfoTitle[64];
        DWORD dwInfoFlags;
        GUID guidItem;
    } NOTIFYICONDATA, *PNOTIFYICONDATA;
    Structure InformationHeader shellapi.h 
    Minimum operating systems Windows NT 4.0, Windows 95 
      

  2.   

    Note that several members of this structure are only supported for Shell32.dll versions 5.0 and later. To enable these members, include one of the following in your header: #define _WIN32_IE 0x0500
    #define _WIN32_IE 0x0600
      

  3.   

    a tip:#define _WIN32_IE 0x0500
    #define _WIN32_IE 0x0600should before #include <afxwin.h> at stdafx.h
      

  4.   

    谢谢了
    我知道,上面的就是最新的NOTIFYICONDATA结构,而且我在stdafx.h头文件里面也加了
    #ifndef _WIN32_IE
    #define _WIN32_IE 0x0500
    #endif
    但程序调用的确还是老的shellapi里面的NOTIFYICONDATA结构
    不晓得是怎么回事.
      

  5.   

    去掉#ifndef _WIN32_IE,#endif
      

  6.   

    去掉了还是一样的
    说NOTIFYICONDATA没有定义dwInfoFlags,uTimeout这些变量
      

  7.   

    下面是我的代码:
    m_nData.cbSize=sizeof(NOTIFYICONDATA);
    m_nData.hWnd=GetSafeHwnd();
    m_nData.uFlags=NIF_MESSAGE|NIF_INFO|NIF_ICON;
    m_nData.uCallbackMessage=MYWM_NOTIFYICON;
    m_nData.uID=IDR_MAINFRAME;
    m_nData.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    m_nData.dwInfoFlags=NIIF_INFO;
    _tcscpy(m_nData.szInfoTitle,"title");
    _tcscpy(m_nData.szInfo,"tip text");
    Shell_NotifyIcon(NIM_ADD,&m_nData);
      

  8.   

    typedef struct _NOTIFYICONDATA { 
        DWORD cbSize; 
        HWND hWnd; 
        UINT uID; 
        UINT uFlags; 
        UINT uCallbackMessage; 
        HICON hIcon; 
        #if (_WIN32_IE < 0x0500)
            WCHAR  szTip[64];
        #else
            WCHAR  szTip[128];
        #endif
        #if (_WIN32_IE >= 0x0500)
            DWORD dwState;
            DWORD dwStateMask;
            WCHAR  szInfo[256];
            union {
                UINT  uTimeout;
                UINT  uVersion;
            } DUMMYUNIONNAME;
            WCHAR  szInfoTitle[64];
            DWORD dwInfoFlags;
        #endif
    } NOTIFYICONDATA, *PNOTIFYICONDATA;   
    shellapi.h 和shell32.lib要一致
      

  9.   

    总算弄好了,原来是我的SDK太老了,刚下了个最新的Platform SDK 2003装上可以了
    谢谢各位了!