2008-12-12 7 views
1

우리는 사용자가 Office MathML 방정식 개체를 삽입 할 수있는 RichEdit 컨트롤을 가지고 있습니다.Visual Basic 6에서 RichEdit 붙여 넣기 개체 위치를 맞추는 방법은 무엇입니까?

은 기본적으로 논리는 다음과 같이 진행됩니다

' Paste the picture into the RichTextBox. 
    SendMessage ctlLastFocus.hwnd, WM_PASTE, 0, 0 
: 삽입 수학 방정식에 사용자가 클릭, 우리는 그들에게 RichEdit 컨트롤로 방정식을 표현하기 위해, 우리는 이미지를 붙여 넣습니다 외부 MathML을 편집기를 사용할 수 있도록 위치를 찾아 사용하여 잠글

: 그것은 모든 좋은 ANSI의 아름다운 세계에서 좋은

With ctlLastFocus 
     'lock the image 
     .SelStart = .SelStart - 1 
     .SelLength = 1 
     .SelProtected = True 

, 그러나 우리는 또한 Unicode 문자를 허용하고, 제가 발견 한 것은 당신이 한자를 사용하는 경우, 삽입 위치 총 게재 순위의 절반으로 잘못되었습니다. 즉, 이제 7 위가된다면 3 위에 삽입됩니다.

기본적으로 2로 나눈 유니 코드는 ANSI와 비교하여 2 바이트가 필요하기 때문에 하나만 필요합니다. 그래서 나는 RTF, RichEdit 및 Visual Basic 6에 대한 경험이없는 모조 인물이기 때문에.

내 질문은 : sendMessage 줄을 사용하여 붙여 넣을 때 이미지의 위치를 ​​변경할 수 있습니까?

또는 다른 방법으로 RichEdit 상자에 삽입 된 이미지의 위치를 ​​제어 하시겠습니까?

+0

어떻게 삽입 위치를 결정합니까? 잠금 코드 만 볼 수 있습니다. –

답변

0

내 접근 방식은 rtf.SelRTF 속성을 보면 RTT 코드가 RichTextBox에서 시각적으로 무엇인지 정확하게 볼 수 있습니다. 그런 다음 파일에 저장하고 단어로로드 한 다음 올바른 위치에 올 때까지 이미지를 이동하고 파일을 저장 한 다음 RTF 코드를 다시 볼 수 있습니다. 이 시점에서 원하는 작업을 수행하기 위해 문자열 조작 코드를 작성하기 위해 중국어 또는 기타 유니 코드 언어의 조합에 대해 충분히 알고 있어야합니다. 나는 모든 유니 코드 문자가 2 바이트라고 완전히 확신하지는 않는다.

희망이 있습니다.

0

붙여 넣기 전에 위치를 검색하지 않는 이유는 무엇입니까?

Dim iStartPos As Long 
Dim iLength As Long 
With ctlLastFocus 
     iStartPos = .SelStart 
     SendMessage.hwnd, WM_PASTE, 0, 0 
     iLength = .SelStart - iStartPos 
     .SelStart = iStartPos 
     .SelLength = iLength 
     .SelProtected = True 
End With