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汉化版运行代码后,拖动几次栏内信息会跳出错误窗口。 回复 2# 曼菲士
我在win7上测试没有问题。
出现这种情况,大部分跟操作系统有关系。偶尔也和内存有关系,个人愚见。 {:face (197):}回复 2# 曼菲士
测试了几次,3.3.6.1表示无鸭梨~~ 鼠标左键按下ListView标题栏(1上面那行),往下拖一下,再点1按住往下拖一下,反复几次就会出这个错误,我尝试了几台电脑都这样,郁闷. 回复 5# 曼菲士
楼上,我对不起你!!原来是真的,选择1或2行随便拖动一下,再点一下窗体就会出错,3.3.6.1也有鸭梨!!{:face (229):}
WIN7 X64下貌似正常~\ 只要连续点击,1或者2就会出现这种报错 只看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")) P大真牛啊!是微软MVP吗? 谢谢P版的分析,学习了。
页:
[1]