这个是托盘程序代码 ,代码中.dwState = 0是什么意思呀?

时间:2021-04-11 21:17:57
With m_IconData
        .cbSize = Len(m_IconData)
        .hWnd = Me.hWnd
        .uID = vbNull
        .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP 'NIF_TIP Or NIF_MESSAGE
        .uCallbackMessage = WM_MOUSEMOVE
        .hIcon = Picture1.Picture 'Me.Icon
        .szTip = "Your Message Here" & vbNullChar
        .dwState = 0
        .dwStateMask = 0
        .szInfo = "This is the result" & vbCrLf & "Pretty cool huh?" & Chr(0)
        '.szInfo = txt
        .szInfoTitle = "Button Clicked" & Chr(0)
        .dwInfoFlags = 1 'NIIF_ERROR
        .uTimeout = 3000
End With
这个是托盘程序代码 ,代码中.dwState = 0是什么意思呀?

14 个解决方案

#1


dwState图标状态,有2个标记,可以单独设置为NIS_HIDDEN(图标隐藏)、NIS_SHAREDICON(图标共享)标记,第二问题:NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???

#2


你这段代码大概跟那里看的?最重要的那断你不帖,帖这段你认为有用吗?

好在托盘的代码到处都有了。

dwState 是 m_IconData的一个属性,你可以这么认为。

而m_IconData是定义NOTIFYICONDATA结构体的。
如果没有错,我认为你的代码中应该有这么一句: Dim m_IconData As NOTIFYICONDATA

这个结构体,你可以这么分解

Private Type NOTIFYICONDATA
    cbSize As Long ' 结构大小(字节)
    hwnd As Long ' 处理消息的窗口的句柄
    uId As Long ' 唯一的标识符
    uFlags As Long ' Flags
    uCallBackMessage As Long ' 处理消息的窗口接收的消息
    hIcon As Long ' 托盘图标句柄
    szTip As String * 128 ' Tooltip 提示文本
    dwState As Long ' 托盘图标状态
    dwStateMask As Long ' 状态掩码
    szInfo As String * 256 ' 气球提示文本
    uTimeoutOrVersion As Long ' 气球提示消失时间或版本
    ' uTimeout - 气球提示消失时间(单位:ms, 10000 -- 30000)
    ' uVersion - 版本(0 for V4, 3 for V5)
    szInfoTitle As String * 64 ' 气球提示标题
    dwInfoFlags As Long ' 气球提示图标
End Type

如果你无法理解这个结构体,你就去查MSDN,MSDN已经详细说明

dwState 
Version 5.0. State of the icon. There are two flags that can be set independently. Flag Description 
NIS_HIDDEN The icon is hidden. 
NIS_SHAREDICON The icon is shared. 

你的代码中应该有以下定义:
' dwState to NOTIFYICONDATA structure
Private Const NIS_HIDDEN = &H1 ' 隐藏图标
Private Const NIS_SHAREDICON = &H2 ' 共享图标


这里面已经说明了,dwState As Long ' 托盘图标状态

而dwStateMask在MSDN的解释是
dwStateMask 
Version 5.0. A value that specifies which bits of the state member are retrieved or modified. For example, setting this member to NIS_HIDDEN causes only the item's hidden state to be retrieved.

所以dwstate的 数值是要和dwstatemask做and操作得出来的,只要dwstatemask是0,那么无论怎么样dwstate都是为0的。这也就是dwstate=0的原因。

实际上,你把这句话注释点,程序也是能运行的

#3


NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???

#4


#5


ding

#6


哇~~~~莫依都出现了呀~~~

HOHO

#7


dwState图标状态,有2个标记,可以单独设置为NIS_HIDDEN(图标隐藏)、NIS_SHAREDICON(图标共享)标记,问题:NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???

#8


解释解释呀,帮帮忙呀

#9


╭═══╮ ╭═══╮ ╭══════╮      
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮     
  ║ ║   ║ ║   ║ ║  ╰╮╰╮    
  ║ ║   ║ ║   ║ ║   ║ ║    
  ║ ║   ║ ║   ║ ║   ║ ║    
  ║ ║   ║ ║   ║ ║  ╭╯╭╯    
  ║ ║   ║ ║   ║ ╰══╯╭╯     
  ║ ║   ║ ║   ║ ╭═══╯      
  ║ ║   ║ ║   ║ ║          
  ║ ║   ║ ║   ║ ║          
  ║ ║   ║ ║   ║ ║          
  ╰╮╰╮ ╭╯╭╯   ║ ║          
   ╰╮╰═╯╭╯   ╭╯ ╰╮         
    ╰═══╯    ╰═══╯

#10


dwState图标状态,有2个标记,可以单独设置为NIS_HIDDEN(图标隐藏)、NIS_SHAREDICON(图标共享)标记,问题:NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???

#11


可是当dwState和dwStateMask都为0的时候,怎么图标不隐藏的呢,不是说会隐藏的?

#12


ding

#13


Private Type NOTIFYICONDATA
    cbSize As Long ' 结构大小(字节)
    hwnd As Long ' 处理消息的窗口的句柄
    uId As Long ' 唯一的标识符
    uFlags As Long ' Flags
    uCallBackMessage As Long ' 处理消息的窗口接收的消息
    hIcon As Long ' 托盘图标句柄
    szTip As String * 128 ' Tooltip 提示文本
    dwState As Long ' 托盘图标状态
    dwStateMask As Long ' 状态掩码
    szInfo As String * 256 ' 气球提示文本
    uTimeoutOrVersion As Long ' 气球提示消失时间或版本
    ' uTimeout - 气球提示消失时间(单位:ms, 10000 -- 30000)
    ' uVersion - 版本(0 for V4, 3 for V5)
    szInfoTitle As String * 64 ' 气球提示标题
    dwInfoFlags As Long ' 气球提示图标
End Type
这样分解!

#14


隐藏是指不活动时隐藏

#1


dwState图标状态,有2个标记,可以单独设置为NIS_HIDDEN(图标隐藏)、NIS_SHAREDICON(图标共享)标记,第二问题:NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???

#2


你这段代码大概跟那里看的?最重要的那断你不帖,帖这段你认为有用吗?

好在托盘的代码到处都有了。

dwState 是 m_IconData的一个属性,你可以这么认为。

而m_IconData是定义NOTIFYICONDATA结构体的。
如果没有错,我认为你的代码中应该有这么一句: Dim m_IconData As NOTIFYICONDATA

这个结构体,你可以这么分解

Private Type NOTIFYICONDATA
    cbSize As Long ' 结构大小(字节)
    hwnd As Long ' 处理消息的窗口的句柄
    uId As Long ' 唯一的标识符
    uFlags As Long ' Flags
    uCallBackMessage As Long ' 处理消息的窗口接收的消息
    hIcon As Long ' 托盘图标句柄
    szTip As String * 128 ' Tooltip 提示文本
    dwState As Long ' 托盘图标状态
    dwStateMask As Long ' 状态掩码
    szInfo As String * 256 ' 气球提示文本
    uTimeoutOrVersion As Long ' 气球提示消失时间或版本
    ' uTimeout - 气球提示消失时间(单位:ms, 10000 -- 30000)
    ' uVersion - 版本(0 for V4, 3 for V5)
    szInfoTitle As String * 64 ' 气球提示标题
    dwInfoFlags As Long ' 气球提示图标
End Type

如果你无法理解这个结构体,你就去查MSDN,MSDN已经详细说明

dwState 
Version 5.0. State of the icon. There are two flags that can be set independently. Flag Description 
NIS_HIDDEN The icon is hidden. 
NIS_SHAREDICON The icon is shared. 

你的代码中应该有以下定义:
' dwState to NOTIFYICONDATA structure
Private Const NIS_HIDDEN = &H1 ' 隐藏图标
Private Const NIS_SHAREDICON = &H2 ' 共享图标


这里面已经说明了,dwState As Long ' 托盘图标状态

而dwStateMask在MSDN的解释是
dwStateMask 
Version 5.0. A value that specifies which bits of the state member are retrieved or modified. For example, setting this member to NIS_HIDDEN causes only the item's hidden state to be retrieved.

所以dwstate的 数值是要和dwstatemask做and操作得出来的,只要dwstatemask是0,那么无论怎么样dwstate都是为0的。这也就是dwstate=0的原因。

实际上,你把这句话注释点,程序也是能运行的

#3


NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???

#4


#5


ding

#6


哇~~~~莫依都出现了呀~~~

HOHO

#7


dwState图标状态,有2个标记,可以单独设置为NIS_HIDDEN(图标隐藏)、NIS_SHAREDICON(图标共享)标记,问题:NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???

#8


解释解释呀,帮帮忙呀

#9


╭═══╮ ╭═══╮ ╭══════╮      
╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮     
  ║ ║   ║ ║   ║ ║  ╰╮╰╮    
  ║ ║   ║ ║   ║ ║   ║ ║    
  ║ ║   ║ ║   ║ ║   ║ ║    
  ║ ║   ║ ║   ║ ║  ╭╯╭╯    
  ║ ║   ║ ║   ║ ╰══╯╭╯     
  ║ ║   ║ ║   ║ ╭═══╯      
  ║ ║   ║ ║   ║ ║          
  ║ ║   ║ ║   ║ ║          
  ║ ║   ║ ║   ║ ║          
  ╰╮╰╮ ╭╯╭╯   ║ ║          
   ╰╮╰═╯╭╯   ╭╯ ╰╮         
    ╰═══╯    ╰═══╯

#10


dwState图标状态,有2个标记,可以单独设置为NIS_HIDDEN(图标隐藏)、NIS_SHAREDICON(图标共享)标记,问题:NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???

#11


可是当dwState和dwStateMask都为0的时候,怎么图标不隐藏的呢,不是说会隐藏的?

#12


ding

#13


Private Type NOTIFYICONDATA
    cbSize As Long ' 结构大小(字节)
    hwnd As Long ' 处理消息的窗口的句柄
    uId As Long ' 唯一的标识符
    uFlags As Long ' Flags
    uCallBackMessage As Long ' 处理消息的窗口接收的消息
    hIcon As Long ' 托盘图标句柄
    szTip As String * 128 ' Tooltip 提示文本
    dwState As Long ' 托盘图标状态
    dwStateMask As Long ' 状态掩码
    szInfo As String * 256 ' 气球提示文本
    uTimeoutOrVersion As Long ' 气球提示消失时间或版本
    ' uTimeout - 气球提示消失时间(单位:ms, 10000 -- 30000)
    ' uVersion - 版本(0 for V4, 3 for V5)
    szInfoTitle As String * 64 ' 气球提示标题
    dwInfoFlags As Long ' 气球提示图标
End Type
这样分解!

#14


隐藏是指不活动时隐藏