最近写的隐藏任务栏图标的小东西里遇到了要调用win32 api里的Shell_NotifyIcon Function。不知道dwMessage 的值应该怎么改写,在此向大家请教。我是这么引用的:
<QUOTE>
[DllImport("shell32.dll")]
static extern bool Shell_NotifyIcon(
uint dwMessage,
[In] ref NOTIFYICONDATA pnid);
</QUOTE>对于NotifyICONDATA结构我是这么写的:
<QUOTE>
struct NOTIFYICONDATA {
public int cbSize;
public IntPtr hwnd;
public int uID;
public int uFlags;
public int uCallbackMessage;
public IntPtr hIcon;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=128)]
public string szTip;
public int dwState;
public int dwStateMask;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
public string szInfo;
public int uVersion;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=64)]
public string szInfoTitle;
public int dwInfoFlags;
}
</QUOTE>
但是涉及到dwMessage需要一个类似的
enum dwMessage: int
{
NIM_ADD=1;
NIM_DELETE=? 
NIM_MODIFY=?
NIM_SETFOCUS=? 
NIM_SETVERSION=? 
}找遍了也没有找到这些值究竟应该是1,2,3,4???我试过在cmd下:D:\program files\Microsoft Visual Studio .NET 2003\Vc7\include>
Findstr dwmessage *.h

Findstr NIM *.h
仍然一无所获。因为对C++不是很了解,所以也不知道在哪里找这些值,还请各位多多帮忙,谢谢。

解决方案 »

  1.   

    你说的NIM_ADD等是在shellapi.h中定义的,你到该文件中就能找到了
      

  2.   

    原来应该在:D:\program files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include
    下面找,而不是在
                D:\program files\Microsoft Visual Studio .NET 2003\Vc7\include>找到后的结果是:
    #define NIM_ADD 
            0x00000000
    #define NIM_MODIFY
    0x00000001
    #define NIM_DELETE
    0x00000002
    #if (_WIN32_IE >= 0x0500)
    #define NIM_SETFOCUS
    0x00000003
    #define NIM_SETVERSION  0x00000004
    #define
    NOTIFYICON_VERSION 3
    #endif