2013-12-20 20 views
-1

這是一個非常普遍的問題。從Rich Edit Control獲取文本

我已經按照本網站上的指令來實現基本的文本編輯器:

http://aclacl.brinkster.net/MFC/ch12e.htm

我想寫在MyWordView.cpp一個函數,會從豐富的編輯控制和分割文本每個單詞放入一個數組中。

我該怎麼辦?

+1

什麼地方錯了,你對你的另一個問題得到的回答?你試過了嗎? – codeling

+0

我試過幾種方法,但都沒有工作。目前我正試圖弄清楚如何獲得富文本控制的句柄。我需要它來嘗試GetDlgItemText。 – user2361103

+1

所以你還在試圖解決其他問題的問題,對吧?那麼爲什麼不繼續呢? – codeling

回答

0

請使用下面的方法來得到豐富的編輯控件選定的文本,

class CSampleRichEditCtrl : public CRichEditCtrl 
{ 
    bool GetString(CString &a_String, CHARRANGE &a_SelectionRange); 
}; 

bool CSampleRichEditCtrl::GetString(CString &a_String, CHARRANGE &a_SelectionRange) 
{ 
    a_SelectionRange.cpMax = 0; 
    a_SelectionRange.cpMin = 0; 

    CHARRANGE aSelectedRange; 
    CString aSelectedText; 
    bool IsSelected(true); 

    GetSel(aSelectedRange); 
    int aMin(aSelectedRange.cpMin); 
    int aMax(aSelectedRange.cpMax); 
    int aDifference(aMax - aMin); 
    if(aDifference == 0) 
    { 
     aDifference = GetTextLength(); 
     IsSelected = false; 
    } 

    LPTSTR aSelectedString = aSelectedText.GetBufferSetLength((aDifference + 1) * 2); 
    aSelectedString[0] = NULL; 
    if(IsSelected == true) 
    { 
     aSelectedText.ReleaseBuffer(); 
     GetSelText(aSelectedString); 
    } 
    else 
    { 
     GetWindowText(aSelectedString, (aDifference + 1) * 2); 
     aSelectedText.ReleaseBuffer(); 
    } 

    a_SelectionRange = aSelectedRange; 
    a_String = aSelectedText; 

    return IsSelected; 
} 
+0

感謝您的答案,但如果我理解正確,這只是獲取選定的文本....我需要從豐富的編輯控件中獲取所有文本。 – user2361103