如何计算vb6中的文本宽度

时间:2015-10-16 06:00:14

标签: vb6

我知道有一个方法textwidth来计算字符串的文本宽度。

但是我们有2个表单,它们有自己独立的列表框。但我们要维护一个常见的.bas文件,其中包含代码。

例如,让表单名称为form1和form2。宽度可以通过form1.TextWidth(ListBox.list(i))和form2.TextWidth(ListBox.list(i))来计算

现在的问题是,既然我们正在为这两个项目维护一个公共的bas文件,那么form2项目并不知道什么是form1。

建议我获取字符串宽度的一些想法。

总的来说,如果超过字符串的最大宽度,我需要将水平滚动条添加到列表框中。因此,如果maxwidth> listboxWidth,我会调用horizo​​ntalscroll bar方法来启用它。

2 个答案:

答案 0 :(得分:0)

这有效:) ListBox.Parent.TextWidth(ListBox.List(i))的

答案 1 :(得分:0)

您将使用WINAPI函数启用Horizo​​ntal Scrollbar,因此您不需要从Pixels To Twips进行转换,对吗?

你需要的只是一个像这样的函数:

function StringWidth(pStr as string) as long
  dim sz as SIZE
  hdc=CreateCompatibleDC(0)
  oldFont=SelectObject(hdc,ifont.handle)
  call GetTextExtentPoint32 (hdc,pStr,len(pstr), sz)
  oldFont=SelectObject(hdc,oldFont)
  call DeleteDC(hdc)

  StringWidth=sz.cx
end function