找回密码
 加入
搜索
查看: 137|回复: 8

新手学习AU3疑问,关于GUICtrlCreateTreeViewItem函数,读取状态的变化值

[复制链接]
发表于 2025-2-8 23:45:59 | 显示全部楼层 |阅读模式
为什么经历过GUISetState()函数,GUICtrlRead($generalitem)的值从1536变成了1792呢?
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <StaticConstants.au3>
GUICreate('GUI')
$TreeView1=GUICtrlCreateTreeView(10,10,100,200)

$generalitem=GUICtrlCreateTreeViewItem('学习资料',$TreeView1)

GUICtrlCreateTreeViewItem('语文',$generalitem)

GUICtrlSetState($generalitem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON))

MsgBox(0,0,BitOR($GUI_EXPAND, $GUI_DEFBUTTON))

MsgBox(0,0,GUICtrlRead($generalitem))

GUISetState()

MsgBox(0,0,GUICtrlRead($generalitem))

While 1

wend


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2025-2-9 12:01:45 | 显示全部楼层
多了256,是激活值+显示值。GUISetState 窗口显示了,且有了激活状态。
 楼主| 发表于 2025-2-9 18:39:33 | 显示全部楼层
afan 发表于 2025-2-9 12:01
多了256,是激活值+显示值。GUISetState 窗口显示了,且有了激活状态。

感谢回复,好像就是多了一个$GUI_FOCUS,这个值为256.帮忙看看这个代码 为什么 MsgBox(0,0,GUICtrlRead($generalitem))值为1280
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
GUICreate('GUI')
$TreeView1=GUICtrlCreateTreeView(10,10,100,200)
$generalitem=GUICtrlCreateTreeViewItem('学习资料',$TreeView1)

GUICtrlCreateTreeViewItem('语文',$generalitem)

GUICtrlSetState($generalitem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON))

MsgBox(0,0,BitOR($GUI_EXPAND, $GUI_DEFBUTTON));---------------------1536

MsgBox(0,0,GUICtrlRead($generalitem));---------------------1536

GUICtrlSetState($generalitem,$GUI_FOCUS)

MsgBox(0,0,GUICtrlRead($generalitem));---------------------1280

GUISetState()


While 1

wend



发表于 2025-2-9 19:21:13 | 显示全部楼层
life999 发表于 2025-2-9 18:39
感谢回复,好像就是多了一个$GUI_FOCUS,这个值为256.帮忙看看这个代码 为什么 MsgBox(0,0,GUICtrlRead($ ...

是的,激活加显示就是焦点。研究这些干啥?没什么意义……
 楼主| 发表于 2025-2-9 19:41:38 | 显示全部楼层
afan 发表于 2025-2-9 19:21
是的,激活加显示就是焦点。研究这些干啥?没什么意义……

我重启设置了状态值,感觉应该是256呀,为什么是1280。就是有点想不通
GUICtrlSetState($generalitem,$GUI_FOCUS)

MsgBox(0,0,GUICtrlRead($generalitem));---------------------1280
发表于 2025-2-9 20:26:25 | 显示全部楼层
life999 发表于 2025-2-9 19:41
我重启设置了状态值,感觉应该是256呀,为什么是1280。就是有点想不通
GUICtrlSetState($generalitem,$GU ...

GUICtrlSetState($generalitem,$GUI_FOCUS) 这样仅设置了焦点,原有的 $GUI_DEFBUTTON 状态就没了。GUICtrlRead 获取的树项目包含很多信息,不光只有$GUI_FOCUS的256,$GUI_DEFBUTTON是512,所以少了256。
研究这些没什么意义,如果是需要获取某状态通常用 BitAND

评分

参与人数 1金钱 +10 收起 理由
holley + 10 赞一个!

查看全部评分

 楼主| 发表于 2025-2-11 12:27:39 | 显示全部楼层
afan 发表于 2025-2-9 20:26
GUICtrlSetState($generalitem,$GUI_FOCUS) 这样仅设置了焦点,原有的 $GUI_DEFBUTTON 状态就没了。GUICt ...

感谢回复,BitAND这个好像是+if判断是否是某一状态用的吧。。需要获取某状态,通常用 BitAND 可以举个例子吗。。
发表于 2025-2-12 15:22:18 | 显示全部楼层
Const $GUI_DEFBUTTON = 512, $GUI_FOCUS = 256

Local $vCs = 1536
If BitAND($vCs, $GUI_DEFBUTTON) Then MsgBox(0, $vCs, '有 GUI_DEFBUTTON')
If BitAND($vCs, $GUI_FOCUS) Then MsgBox(0, $vCs, '有 GUI_FOCUS')

Dim $vCs = 1280
If BitAND($vCs, $GUI_DEFBUTTON) Then MsgBox(0, $vCs, '有 GUI_DEFBUTTON')
If BitAND($vCs, $GUI_FOCUS) Then MsgBox(0, $vCs, '有 GUI_FOCUS')
 楼主| 发表于 2025-2-13 19:08:44 | 显示全部楼层

好的。。学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-2-21 20:20 , Processed in 0.082832 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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