如何在vb6中计算文本宽度
我知道有一种方法textwidth来计算字符串的文本宽度 但是我们有两个表单,它们有自己单独的列表框。但是我们要维护一个公共的.bas文件,它保存了它的代码 例如,让表单名称为form1和form2。宽度可以通过form1.TextWidthListBox.listi和form2.TextWidthListBox.listi计算 现在的问题是,由于我们为这两个项目维护一个公共bas文件,form2项目不知道form1是什么 给我提些建议,让我知道绳子的宽度 总的来说,我需要添加水平滚动条到列表框,如果它超过了字符串的最大宽度。因此,如果maxwidth>listboxWidth,那么我将调用horizontalscroll bar方法来启用它。这样做:如何在vb6中计算文本宽度,vb6,Vb6,我知道有一种方法textwidth来计算字符串的文本宽度 但是我们有两个表单,它们有自己单独的列表框。但是我们要维护一个公共的.bas文件,它保存了它的代码 例如,让表单名称为form1和form2。宽度可以通过form1.TextWidthListBox.listi和form2.TextWidthListBox.listi计算 现在的问题是,由于我们为这两个项目维护一个公共bas文件,form2项目不知道form1是什么 给我提些建议,让我知道绳子的宽度 总的来说,我需要添加水平滚动条到列表框
ListBox.Parent.TextWidthListBox.Listi您将使用WINAPI函数启用水平滚动条,因此您不需要进行从像素到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
当然,除非ListBox及其父项具有完全相同的字体设置,否则无法给出正确的结果。否则,这是显而易见的方法,如手册中的示例代码所示。