从Rich Edit Control获取文本

时间:2013-12-20 12:29:44

标签: c++ mfc

这是一个非常普遍的问题。

我已按照本网站上的说明实施了基本文本编辑器:

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

我想在MyWordView.cpp中编写一个函数,它从富编辑控件中获取文本并将每个单词拆分成一个数组。

我该怎么做?

1 个答案:

答案 0 :(得分: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;
}