xiehuahere 发表于 2012-11-28 17:28:48

_GUICtrlListView_Create中设置扩展样式有问题(bug?)

本帖最后由 xiehuahere 于 2012-11-30 13:18 编辑

帮助文档中_GUICtrlListView_GetHotItem的例子修改一下:

$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
$hListView = GUICtrlGetHandle($hListView)
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT))

这三句替换为下面这一行代码:
$hListView = _GUICtrlListView_Create($hGUI, "", 2, 2, 394, 268, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT))

GRIDLINE扩展风格未能正确设置,也不能 track hot item了(鼠标在subitem上移动状态栏显示不更新)。

再将这一行代码替换为:
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT))
$hListView = GUICtrlGetHandle($hListView)
发现一切又正常了。

这是不是说明了 _GUICtrlListView_Create函数设置扩展样式有问题? Bug??
可能写这个函数的人是知道有这个问题的,所以搞了个 _GUICtrlListView_SetExtendedListViewStyle 函数出来。

annybaby 发表于 2012-11-28 18:30:51

简单测试下,问题~~~

xiehuahere 发表于 2012-11-28 20:16:36

回复 2# annybaby

对啊,是有问题啊
没有格子线了

annybaby 发表于 2012-11-28 20:38:12

回复 3# xiehuahere


    抱歉,手机上网,修改不了,是没有问题

xiehuahere 发表于 2012-11-28 21:01:49

公司是XP,我在家里的Win7 32位上也试了下,也还是有问题的
鼠标指到subitem,下面状态栏也不更新了。

xiehuahere 发表于 2012-11-28 21:01:51

公司是XP,我在家里的Win7 32位上也试了下,也还是有问题的
鼠标指到subitem,下面状态栏也不更新了。

annybaby 发表于 2012-11-29 10:43:19

回复 6# xiehuahere


    上个图有那么难吗??呵呵

xiehuahere 发表于 2012-11-29 11:57:36

回复 7# annybaby

我之前也是手机发帖,不方便。



gif动画,不知道能显示不。
你看啊,鼠标悬在Column1(item)上下移动的时候,状态栏是有变化的;
但鼠标悬在Column2和Column3(subitem)上下移动,状态栏就无变化了。
而且gridline风格何在??

annybaby 发表于 2012-11-29 12:45:11

本帖最后由 annybaby 于 2012-11-29 12:47 编辑

回复 8# xiehuahere


sorry,MS真有问题

xiehuahere 发表于 2012-11-29 12:51:03

本帖最后由 xiehuahere 于 2012-11-29 13:02 编辑

回复 9# annybaby


嗯,不清楚什么原因啊。

xiehuahere 发表于 2012-11-30 13:12:03

本帖最后由 xiehuahere 于 2012-11-30 13:16 编辑

再来,一楼代码再变一变,变为下面这样就又是ok的。
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT))
$hListView = GUICtrlGetHandle($hListView)

即在GUICtrlCreateListView中设置扩展样式就没问题。
看来,这很可能是_GUICtrlListView_Create的一个bug了 ;-)

xiehuahere 发表于 2012-12-5 11:46:16

说明下,autoit版本是3.3.7.15.1

netegg 发表于 2012-12-5 12:24:55

本帖最后由 netegg 于 2012-12-5 23:45 编辑

#Include <guilistview.au3>
#Include <WinAPIEx.au3>
$hGUI = GUICreate('')
$hWnd = _GUICtrlListView_Create($hGUI, "", 2, 2, 394, 268, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT))
ConsoleWrite(Hex(_WinAPI_GetWindowLongEx($hWnd, $GWL_EXSTYLE)) & '------' & Hex(_WinAPI_GetWindowLongEx($hWnd, $GWL_STYLE))& @cr)

$hWnd = GUICtrlCreateListView("", 2, 2, 394, 268)
$hWnd = GUICtrlGetHandle($hWnd)
_GUICtrlListView_SetExtendedListViewStyle($hWnd, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT))
ConsoleWrite(Hex(_WinAPI_GetWindowLongEx($hWnd, $GWL_EXSTYLE)) & '------' & Hex(_WinAPI_GetWindowLongEx($hWnd, $GWL_STYLE))& @cr)

$hWnd = GUICtrlCreateListView("", 2, 2, 394, 268, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT))
$hWnd = GUICtrlGetHandle($hWnd)
ConsoleWrite(Hex(_WinAPI_GetWindowLongEx($hWnd, $GWL_EXSTYLE)) & '------' & Hex(_WinAPI_GetWindowLongEx($hWnd, $GWL_STYLE))& @cr)

解决方法暂时没想到,上述可以算是原因

又测试了下,应该是udf的构造问题,样式都改成一样的数值还是没用
页: [1]
查看完整版本: _GUICtrlListView_Create中设置扩展样式有问题(bug?)