2012-09-07 112 views
1

我試圖從vb6中的richtextbox控件獲取文本。但是,unicode文本不起作用。如何從vb6以unicode格式從richtextbox獲取文本

text1=richtextbox1.text 

這給了我"????"

任何人可以幫助我嗎?


此代碼無效。 我嘗試使用此聲明運行:

Const GTL_USECRLF = 1 
Const GTL_PRECISE = 2 
Const GTL_NUMCHARS = 8 
Const CP_UNICODE = 1200 
Const GT_USECRLF = 1 
Private Type GETTEXTEX 
    cb As Long 
    flags As Long 
    codepage As Integer 
    lpDefaultChar As String 
    lpUsedDefChar As Boolean 
End Type 
Private Type GETTEXTLENGTHEX 
    flags As Long   ' /* flags (see GTL_XXX defines)    */ 
    codepage As Long  ' /* code page for translation (CP_ACP for default, 
          '1200 for Unicode       */ 
End Type 

,我不知道:

EM_GETTEXTLENGTHEX , EM_GETTEXTEX 

請發送完整的代碼。 (所有聲明)

+1

根據[這MSDN博客頁](http://blogs.msdn.com/b/michkap/archive/2005/08/ 21/454340.aspx)VB6 RichTextBox控件實際上不支持Unicode。它繼續建議第三方控件套件下降399美元,但IMO免費下載VB.NET Express Edition可能是更好的選擇。 –

+0

另請參閱此問題:[什麼是在VB6中顯示Unicode文本的最佳選項](http://stackoverflow.com/questions/540361/whats-the-best-option-to-display-unicode-text-hebrew-etc -in-vb6) – MarkJ

+0

@mahdi:請不要將問題替換爲「謝謝」通知。這個網站是關於幫助其他人有類似的問題,並刪除該問題使其無用。如果您想跟進,請在接受的答案上留言,然後點擊左側的綠色提示。 – Deanna

回答

1

真的很容易。下面是裸露的骨頭沒有所需DeclareConst等聲明:

Public Function RTBReadUnicode(ByVal RTB As RichTextLib.RichTextBox) As String 
    'Reads Text from RichTextBox as Unicode text on a system with Rich Edit 3.0 
    '(Windows Me, Windows 2000, or later). 
    Dim gtlUnicode As GETTEXTLENGTHEX 
    Dim gtUnicode As GETTEXTEX 
    Dim lngChars As Long 

    With gtlUnicode 
     .flags = GTL_USECRLF Or GTL_PRECISE Or GTL_NUMCHARS 
     .codepage = CP_UNICODE 
    End With 
    lngChars = SendMessageWLng(RTB.hWnd, EM_GETTEXTLENGTHEX, VarPtr(gtlUnicode), 0) 

    With gtUnicode 
     .cb = (lngChars + 1) * 2 
     .flags = GT_USECRLF 
     .codepage = CP_UNICODE 
    End With 
    RTBReadUnicode = String$(lngChars, 0) 
    SendMessageWLng RTB.hWnd, EM_GETTEXTEX, VarPtr(gtUnicode), StrPtr(RTBReadUnicode) 
End Function 
相關問題