chrw()函数33 to 65535 vb程序就卡死
vb吧
全部回复
仅看楼主
level 1
VB中有一个函数叫ChrW,Chr 的有效范围是 0 到 255,而ChrW 的有效范围是 -32768 到 65535。chrw()函数33 to 255就没事 33 to 65535 vb程序就卡死 窗体未响应 怎么回事 text文本框 画圈的地方不是正常的音符 是乱码 这个符号在字符映射表里没有
2022年02月18日 05点02分 1
level 14
Text1.Text = Text1.Text & XXX 不卡死才怪 ' 又是字符串拼接,又是文本框赋值,两大超慢操作组合到一起能不卡死吗?
另外你说的显示音符的问题,那是因为字体文件里面没有这个字符对于的字形,所以给你显示成该字体的默认字形。不同字体文件的默认字符是不一样的,比如微软雅黑的默认字形就是一个方框,而宋体是个空格。
2022年02月18日 05点02分 2
level 14
Option Explicit
Const WM_SETTEXT As Long = &HC&
Private Declare Function SendMessageW Lib "user32" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Sub Command1_Click()
' 用 Integer 数组代替字符可优化循环&开销问题
' 用 SendMessageW 直接发送Unicode文本地址到文本框比 Text 属性赋值快
Dim buf() As Integer, i As Long
ReDim buf(0 To &HFFFF&)
For i = 0 To &H7FFE&
buf(i) = CInt(i + 1)
Next
For i = &H7FFF& To &HFFFE&
buf(i) = CInt(i - &H8000&)
Next
SendMessageW Text1.hWnd, WM_SETTEXT, 0, VarPtr(buf(0))
End Sub
2022年02月18日 06点02分 3
1