设置超级列表框行间距模块

易语言 2020-07-05 18:38:02

winpos.hwnd = 超级列表框句柄
' 保存窗口的原样式值
OldStyle = GetWindowLong (winpos.hwnd, #GWL_STYLE)
' 设置新样式值,增加LVS_OWNERDRAWFIXED样式,这样窗口才会收到 WM_MEASUREITEM 消息。
SetWindowLong (winpos.hwnd, #GWL_STYLE, 位或 (OldStyle, #LVS_OWNERDRAWFIXED))
' 发送 WM_WINDOWPOSCHANGED 消息触发 WM_MEASUREITEM 消息
SendMessageWINDOWPOS (winpos.hwnd, #WM_WINDOWPOSCHANGED, 0, winpos)
' 使用API调整超列尺寸,作用同上
' SetWindowPos (winpos.hwnd, 0, 0, 0, 超级列表框1.宽度 - 1, 超级列表框1.高度, 位或 (#SWP_NOMOVE, #SWP_SHOWWINDOW))
' SetWindowPos (winpos.hwnd, 0, 0, 0, 超级列表框1.宽度 + 1, 超级列表框1.高度, 位或 (#SWP_NOMOVE, #SWP_SHOWWINDOW))
' 直接修改属性调整尺寸,作用同上。
' 超级列表框1.宽度 = 超级列表框1.宽度 + 1
' 超级列表框1.宽度 = 超级列表框1.宽度 - 1
' 当程序执行到这里,WndProc()子程序中已经收到了那个 WM_MEASUREITEM 消息,并设置了新的行高。
' 恢复窗口样式,如果不恢复,超列就需要自行绘制。
SetWindowLong (winpos.hwnd, #GWL_STYLE, OldStyle)
' 更新超级列表框,新的行高样式就显示出来了。
SendMessage (winpos.hwnd, #LVM_UPDATE, 0, 0)