我用下列方法计算字体宽度,但改变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
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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货