曼菲士 发表于 2011-6-16 18:21:12

ListView中使用$LVS_EX_SIMPLESELECT样式会出错

本帖最后由 曼菲士 于 2011-6-16 18:28 编辑

#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
GUICreate('', 400, 300)
$ListView1 = GUICtrlCreateListView("|", 5, 5, 390, 280, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SIMPLESELECT));$LVS_EX_CHECKBOXES样式 = 为项目添加复选框
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 350)
GUICtrlCreateListViewItem('1', $ListView1)
GUICtrlCreateListViewItem('2', $ListView1)
GUISetState()

Do
Until GUIGetMsg() = -3

AutoIT3.3.7.8汉化版运行代码后,拖动几次栏内信息会跳出错误窗口。

曼菲士 发表于 2011-6-16 18:23:26

daiyu116 发表于 2011-6-16 18:58:26

回复 2# 曼菲士

我在win7上测试没有问题。
出现这种情况,大部分跟操作系统有关系。偶尔也和内存有关系,个人愚见。

annybaby 发表于 2011-6-16 20:11:53

{:face (197):}回复 2# 曼菲士

测试了几次,3.3.6.1表示无鸭梨~~

曼菲士 发表于 2011-6-17 09:19:56

鼠标左键按下ListView标题栏(1上面那行),往下拖一下,再点1按住往下拖一下,反复几次就会出这个错误,我尝试了几台电脑都这样,郁闷.

annybaby 发表于 2011-6-17 12:08:26

回复 5# 曼菲士

楼上,我对不起你!!原来是真的,选择1或2行随便拖动一下,再点一下窗体就会出错,3.3.6.1也有鸭梨!!{:face (229):}

thesnow 发表于 2011-6-17 12:20:48

WIN7 X64下貌似正常~\

东挑西点 发表于 2011-6-17 15:56:54

只要连续点击,1或者2就会出现这种报错

pusofalse 发表于 2011-6-21 08:27:37

只看0x771CFB53这个异常地址,我就知道这绝对不是AutoIt的BUG,这是comctl32.dll中的地址。
另外,0xC0000094是除零的错误代码,comctl32.dll内部调用ImageList_GetImageCount之后,没有判断 就直接对这个结果进行相除运算了,只要把这个除法指令填充掉就可以了。在脚本开始处加入以下代码:


$pExceptionAddr = 0x771CFB53

DllCall("Kernel32.dll", "bool", "VirtualProtect", "ptr", $pExceptionAddr, "long", 2, "long", 0x40, "long*", 0)

$tNop = DllStructCreate("ubyte nop", $pExceptionAddr)
DllStructSetData($tNop, "nop", Binary("0x9090"))

ejzhang 发表于 2011-8-6 23:33:40

P大真牛啊!是微软MVP吗?

曼菲士 发表于 2011-12-9 23:55:38

谢谢P版的分析,学习了。
页: [1]
查看完整版本: ListView中使用$LVS_EX_SIMPLESELECT样式会出错