在RichTextBox中,当发送EM_LINEINDEX以获取行的第一个字符的索引时,索引将受到软换行符的影响。请考虑以下文本框:
调用SendMessage hWnd, EM_LINEINDEX, 1, 0
将导致25,而我希望它返回45(第1行应该是"这是另一行"不是"并且继续在这里") 。
有没有办法使用WinAPI调用获取第二行的真实第一个char索引?
答案 0 :(得分:0)
这是来自一个工作程序。我玩右边距。
Sub mnuWordWrap_Click()
'On Error Resume Next
If txtNote.RightMargin = 0 Then
txtNote.RightMargin = &HFFFE&
mnuWordWrap.Checked = False
Else
txtNote.RightMargin = 0
mnuWordWrap.Checked = True
End If
txtNote.SetFocus
txtNote_SelChange
End Sub
在另一个程序中,我这样做,虽然这是Vista的RTF窗口(不是控件,所以不是VB6的旧ANSI版本的RTF)
If mnuViewWordWrap.Checked = True Then
Ret = SendMessageByVal(gRtfHwnd, EM_SETTARGETDEVICE, GetDC(gRtfHwnd), -1800)
If Ret = 0 Then ReportError "Form Resize", "Set Target Device"
Else
Ret = SendMessageByVal(gRtfHwnd, EM_SETTARGETDEVICE, GetDC(gRtfHwnd), 4000000)
If Ret = 0 Then ReportError "Form Resize", "Set Target Device"
End If