Winapi的ListView标题分隔线和LVS_EX_GRIDLINES单元格对齐问题

5
我正在一个对话框中使用ListView控件,其可视样式设置为LV_VIEW_DETAILS(报告视图),扩展可视样式设置为LVS_EX_GRIDLINES。在Windows 10上执行时,我得到的结果如下图所示: Alignment issue 正如您所看到的,标题分隔符和围绕项目的单元格的垂直线不对齐。标题和第一行之间也没有边框。
这个问题在使用相同控件的程序中也很明显,例如WinRAR: Alignment issue 有没有简单的方法来解决这个问题?

LVS_EX_GRIDLINES 一直存在缺陷。 - Jonathan Potter
1个回答

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

这是针对comctl32.dll版本6.10.19041.1052的,但您应该能够扫描此AoB以查找脚本中结果上方几行使用的地址。

BA 0B 12 00 00 48 FF 15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接