使用sendmessage函数类型不匹配

来源:百度知道 编辑:UC知道 时间:2024/05/22 01:38:03
在编写一个文字统计按钮时选用sengmessage函数出现类型不匹配,错误定义在Private Sub mnutongji_Click() line_num = SendMessage(ActiveForm.rtfText.hwnd, EM_GETLINECOUNT, 0, 0)的最后一个0字上。
原代码如下:
在通用模块中定义:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
命令按扭单击事件:
Private Sub mnutongji_Click()
Dim info As String
Dim char_num As Long
Dim line_num As Long

On Error Resume Next
line_num = SendMessage(ActiveForm.rtfText.hwnd, EM_GETLINECOUNT, 0, 0)
info = "总行数:" & CStr(line_num) & vbCrLf & vbCrLf

char_num = Len(ActiveForm.rtfText.Text)
info = info & "总字数:" & CStr(char_num) & vbCrLf & vbCrLf

MsgBox info, vbInformation, "文档统计"

End Sub
请求哪位高手为我指点迷津。

最后一个0必须写成0&、0#等形式,不能只写一个0。

把API声明中的lParam As Any改成lParam As Long。
Any是用于其它用途的,你这里得用Long.

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_GETLINECOUNT = &HBA
Private Sub mnutongji_Click()
Dim info As String
Dim char_num As Long
Dim line_num As Long

On Error Resume Next
line_num = SendMessage(ActiveForm.rtfText.hwnd, EM_GETLINECOUNT, 0, 0&)
info = "总行数:" & CStr(line_num) & vbCrLf & vbCrLf

char_num = Len(ActiveForm.rtfText.Text)
info = info & "总字数:" & CStr(char_num) & vbCrLf & vbCrLf

MsgBox info, vbInformation, "文档统计"

End Sub

楼主此言差矣 any可变类型 是用户自己指明类型