tho*_*asc 5 winapi listview windows-10
我在对话框中使用 ListView 控件,其视觉样式设置为LV_VIEW_DETAILS(报表视图),扩展视觉样式设置为LVS_EX_GRIDLINES. 在 Windows 10 上执行时,我得到的结果是:
如您所见,标题分隔符和项目周围单元格的垂直线未对齐。标题和第一行之间也没有边框。
该问题在使用相同控件的程序中也很明显,例如 WinRAR:
有没有简单的方法来解决这个问题?
小智 0
由于对这个问题的答复没有帮助,我决定自己寻找解决方案。对于将来遇到此问题的任何人,这里有一个针对 x64 应用程序的解决方案,它修复了 comctl32.dll 内部的错误(这是特定于版本的)。确保您使用的是 LVS_EX_DOUBLEBUFFER。
[ENABLE]
alloc(newmem,128)
label(returnhere)
label(originalcode)
label(exit)
newmem:
cmp r14,0
jne originalcode
push rax
lea rax,[rsp+88]
dec dword ptr [rax+4]
pop rax
originalcode:
mov rbx,[rsp+30]
mov rsi,[rsp+38]
add rsp,20
exit:
jmp returnhere
comctl32.DSA_Create+105F:
jmp newmem
returnhere:
[DISABLE]
dealloc(newmem)
comctl32.DSA_Create+105F:
mov rbx,[rsp+30]
mov rsi,[rsp+38]
add rsp,20
Run Code Online (Sandbox Code Playgroud)
这是针对 comctl32.dll 版本 6.10.19041.1052 的,但您应该能够扫描此 AoB 以找到结果上方几行脚本中使用的地址。
BA 0B 12 00 00 48 FF 15
Run Code Online (Sandbox Code Playgroud)