在不考虑软线突破的情况下开始线路

时间:2015-07-30 21:11:02

标签: winapi vb6

在RichTextBox中,当发送EM_LINEINDEX以获取行的第一个字符的索引时,索引将受到软换行符的影响。请考虑以下文本框:

example of richtextbox with soft line break

调用SendMessage hWnd, EM_LINEINDEX, 1, 0将导致25,而我希望它返回45(第1行应该是"这是另一行"不是"并且继续在这里") 。

有没有办法使用WinAPI调用获取第二行的真实第一个char索引?

1 个答案:

答案 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