VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 987|回复: 7

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

[复制链接]

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-24 20:00:01 | 显示全部楼层 |阅读模式
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是什么意思呀?
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-2-12 08:45:01 | 显示全部楼层
dwState图标状态,有2个标记,可以单独设置为NIS_HIDDEN(图标隐藏)、NIS_SHAREDICON(图标共享)标记,第二问题:NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???
回复

使用道具 举报

0

主题

9

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-2-13 19:30:01 | 显示全部楼层
你这段代码大概跟那里看的?最重要的那断你不帖,帖这段你认为有用吗?

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

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的原因。

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

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-4-6 00:15:01 | 显示全部楼层
NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-27 10:15:01 | 显示全部楼层
dwState图标状态,有2个标记,可以单独设置为NIS_HIDDEN(图标隐藏)、NIS_SHAREDICON(图标共享)标记,问题:NIS_HIDDEN(图标隐藏)和NIS_SHAREDICON(图标共享)标记有什么区别呢???
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-7-21 21:15:01 | 显示全部楼层
可是当dwState和dwStateMask都为0的时候,怎么图标不隐藏的呢,不是说会隐藏的?
回复

使用道具 举报

0

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-7-28 21:00:01 | 显示全部楼层
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
这样分解!
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-9-2 23:30:01 | 显示全部楼层
隐藏是指不活动时隐藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表