我用下列方法计算字体宽度,但改变DPI设置(即,显示器/设置/高级/DPI设置:大尺寸(120DPI))时,计算结果会变化,请问大家有没有好的办法。
Type Size     '以下6行为字符宽度计算用
    cx As Long
    cy As Long
End Type
Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As Size) As Long
    '具体过程:
    Dim hdc5 As Long
    Dim sz As Size    SS = Me.文本框.Text
    N = Len(SS)
    hdc5 = GetDC(Screen.ActiveForm.hWnd)
    Call GetTextExtentPoint32(hdc5, SS, N, sz) '    所求宽度 = sz.cx
这是网上看到的贴子.为什么我改了字体结果sz.cx
的值没有变化呢?

解决方案 »

  1.   

    GetDC(Screen.ActiveForm.hWnd)我改成getdc(text1.hwnd)  是不是这个错了?我应该改成什么?
      

  2.   

    TextWidth 怎么用?字体改过有影响吗?
      

  3.   

    大家帮帮忙啊!我用TextWidth,不管我怎么改字体大小,得到的数据都不会变啊!
      

  4.   

    不明白你想干什么,如果但是想得到字符的宽度,那TextWidth是最好的了。
      

  5.   

    text1.width=TextWidth(text1.text)这样显示不下数据!为什么?还要怎么处理过这个宽度吗?
      

  6.   

    比较简单的方法,不用API:
    用个LABEL控件,AUTOSIZE属性设为TRUE,
    然后
    LABEL1.CAPTION="你要显示的东东"
    MSGBOX LABEL1.WIDTH搞定了不?