找回密码
 加入
搜索
查看: 12389|回复: 10

[BUG报告] ListView中使用$LVS_EX_SIMPLESELECT样式会出错

[复制链接]
发表于 2011-6-16 18:21:12 | 显示全部楼层 |阅读模式
本帖最后由 曼菲士 于 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 | 显示全部楼层

本帖子中包含更多资源

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

×
发表于 2011-6-16 18:58:26 | 显示全部楼层
回复 2# 曼菲士

我在win7上测试没有问题。
出现这种情况,大部分跟操作系统有关系。偶尔也和内存有关系,个人愚见。
发表于 2011-6-16 20:11:53 | 显示全部楼层
回复 2# 曼菲士

测试了几次,3.3.6.1表示无鸭梨~~
 楼主| 发表于 2011-6-17 09:19:56 | 显示全部楼层
鼠标左键按下ListView标题栏(1上面那行),往下拖一下,再点1按住往下拖一下,反复几次就会出这个错误,我尝试了几台电脑都这样,郁闷.
发表于 2011-6-17 12:08:26 | 显示全部楼层
回复 5# 曼菲士

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

本帖子中包含更多资源

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

×
发表于 2011-6-17 12:20:48 | 显示全部楼层
WIN7 X64下貌似正常~\
发表于 2011-6-17 15:56:54 | 显示全部楼层
只要连续点击,1或者2就会出现这种报错
发表于 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[2]", $pExceptionAddr)
DllStructSetData($tNop, "nop", Binary("0x9090"))
发表于 2011-8-6 23:33:40 | 显示全部楼层
P大真牛啊!是微软MVP吗?
 楼主| 发表于 2011-12-9 23:55:38 | 显示全部楼层
谢谢P版的分析,学习了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 21:15 , Processed in 0.078429 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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