本帖最后由 yhxhappy 于 2010-8-4 10:24 编辑
回复 16# pusofalse
P版再一次提醒了我,又重新验证发现把ListView和Label设置成一样的字体,计算出来的宽度非常准确,之前12楼的代码计算有误差可能是ListView和Label的默认字体或字号不一致导致的。
非常感谢P版的指点。#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
GUICreate("ListView Get String Width", 400, 150)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 200, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
GUICtrlSetFont(-1, 12, 800, 0, "Arial") ;设置字号及字体
GUICtrlSetState(-1, $GUI_HIDE)
$txt = "测试字符串A"
$width = _GUICtrlListView_GetStringWidth($hListView, $txt)
GUISetState()
GUICtrlCreateLabel($txt, 20, 50, $width, 18)
GUICtrlSetFont(-1, 12, 800, 0, "Arial") ;设置字号及字体
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlCreateLabel("字符串 '" & $txt &"' 的像素宽度: "& $width, 20, 100, 400, 18)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
|