textwitdh("YOUR STRING")
返回的是一窗体长度单位的数值,一般是缇(twip)

解决方案 »

  1.   

    me.Textwidth("X")得到一个字符的宽度(其实你在字符串里写再多也只能得到第一个字符的宽度,呵呵。)然后再用这个宽度*len("ANYTHING").
      

  2.   

     Picture1.FontSize = 8
     MsgBox Picture1.TextWidth("ABCDEF")
      

  3.   

    同志们都说对了,Amoon(阿木)说得最正确.呵呵
      

  4.   

    Amoon(阿木) :有MM总是在夜里出没的吗?
      

  5.   

    那有没有,身高180CM体重83公斤胸围115CM腰围68CM臂围36cm,
    卧推150斤!引体向上一组15个,付卧撑一组80个轻而一举的MM呢?
      

  6.   

    to Amoon(阿木):me.Textwidth("X")得到一个字符的宽度(其实你在字符串里写再多也只能得到第一个字符的宽度,呵呵。)然后再用这个宽度*len("ANYTHING")。如果是不定宽的字体就不行啦
      

  7.   

    to sweet(阿甘):不定宽?为什么会不定宽?
      

  8.   

    to sweet(阿甘):不定宽?那就A...Z都来一次吧,呵呵.
    其实要得到一个字符串的准确宽度,用DrawTextEx最好啦。:)
      

  9.   

    真正获得一个字符串显示的长度,需要用到相关DC句柄
    并调用API GetTextExtend  来获取象素单位的长度。有一种变通的方法是用label来装载一个字符串,并设为autosize,然后取其长度就行了
      

  10.   

    gameboy999真是聪明。
    在vb中用WIN32 API有时结果不准确。用lable却是一个即简单又好用的方法。
      

  11.   

    VBA.MsgBox Me.ScaleX(Me.TextWidth("aa"), vbHimetric, vbPixels)
      

  12.   

    '编成函数
    '借用一个 PictureBox
    'Object: Form1、Picture1、Command1
    Option Explicit
    Public Function GetTextWidth(TextX As String, FontX As stdole.StdFont, PictureX As VB.PictureBox, Optional FromScale As VBRUN.ScaleModeConstants = vbHimetric, Optional ToScale As VBRUN.ScaleModeConstants = vbPixels) As Double
    '保留原值 Clone 该字体为今后恢复,也可能没必要
    Dim Temp As New stdole.StdFont
    Temp.Bold = FontX.Bold
    Temp.Charset = FontX.Italic
    Temp.Name = FontX.Name
    Temp.Size = FontX.Size
    Temp.Strikethrough = FontX.Strikethrough
    Temp.Underline = FontX.Underline
    Temp.Weight = FontX.WeightSet PictureX.Font = FontX
    GetTextWidth = PictureX.ScaleX(PictureX.TextWidth(TextX), FromScale, ToScale)
    '恢复
    Set PictureX.Font = Temp
    End FunctionPrivate Sub Command1_Click()
    'VBA.MsgBox Me.ScaleX(Me.TextWidth("aa"), vbHimetric, vbPixels)
    'VBA.MsgBox GetTextWidthPixels("aa", Me.Font, Picture1)
    Dim x As New stdole.StdFont
    x.Size = 12
    VBA.MsgBox GetTextWidth("a阿", x, Picture1)
    End Sub
      

  13.   

    谢谢各位,其实我只是想给一个list控件加上横向滚动条。要以item的字符长度来确定滚动条的长度。现在可以了。
    icbcnbxs(我来灌水) TMD就认定我是女的了!:-(
      

  14.   

    我自己的计算方法Public Function GetWidth(mstr As String, fontsize As Single) As Single
    '-----------get the width of string in screen or printer
    Dim i As Integer
        GetWidth = LenB(StrConv(mstr, vbFromUnicode)) * fontsize * 10
    End Function
      

  15.   

    uguess(uguess) :
    我有给分啊,可是这些每次点给分按钮后就说找不能网页啊!以所总是给不了分啊。
    虽然我来csnd完全出于学习而对分数并不关心,但我对于信用我还是看重的啊,所以我每次都给分的啊。还有各位,这个问题已解决了,不过还是希望大家提出好的方法。