如何使用 RTF 文字作業

應用程式可以傳送訊息,以在豐富的編輯控件中擷取或尋找文字。 您可以擷取選取的文字或指定的文字範圍。

若要在豐富的編輯控制項中取得選取的文字,請使用 EM_GETSELTEXT 訊息。 文字會複製到指定的字元陣列。 您必須確定陣列夠大,足以保存選取的文字加上終止的Null字元。

若要擷取指定的文字範圍,請使用 EM_GETTEXTRANGE 訊息。 與 這個訊息搭配使用的 TEXTRANGE 結構會指定要擷取的文字範圍,並指向接收文字的字元數位。 同樣地,應用程式必須確定陣列足以容納指定的文字加上終止的Null字元。

您可以使用EM_FINDTEXT或EM_FINDTEXTEX訊息,或其 Unicode 對等專案、EM_FINDTEXTWEM_FINDTEXTEXW,在豐富編輯控件中搜尋字串。 與 nonextended 版本搭配使用的 FINDTEXT 結構會指定要搜尋的文字範圍,以及要搜尋的字串。 擴充版本會使用 FINDTEXTEX 結構,其會指定相同的資訊,也會接收所找到文字字元範圍的起點和終點。 您也可以指定這類選項,例如搜尋是否區分大小寫。

您需要知道的事項

技術

必要條件

  • C/C++
  • Windows 使用者介面程序設計

指示

使用 RTF 文字作業

下列範例函式會在支援 Unicode 的豐富編輯控件中,尋找所選取文字內的指定文字。 如果找到目標,它就會成為新的選取範圍。

BOOL FindTextInSelection(HWND hRich, WCHAR* target)
{
    CHARRANGE selectionRange;
    
    SendMessage(hRich, EM_EXGETSEL, 0, (LPARAM)&selectionRange);
    
    FINDTEXTEX ftex;
    
    ftex.lpstrText  = target;
    ftex.chrg.cpMin = selectionRange.cpMin;
    ftex.chrg.cpMax = selectionRange.cpMax;
    
    LRESULT lr = SendMessage(hRich, EM_FINDTEXTEXW, (WPARAM)FR_DOWN, (LPARAM) &ftex);
    
    if (lr >= 0)
    {
        LRESULT lr1 = SendMessage(hRich, EM_EXSETSEL, 0, (LPARAM)&ftex.chrgText);
        
        SendMessage(hRich, EM_HIDESELECTION, (LPARAM)FALSE, 0);
        
        return TRUE;
    }
    
    return FALSE;
    
}

備註

Microsoft Rich Edit 3.0 也支援 HexToUnicode 輸入法編輯器 (IME) 函式,讓用戶能夠使用快速鍵在十六進位和 Unicode 之間轉換。 如需詳細資訊,請參閱 HexToUnicode IME

使用 Rich Edit 控制件

Windows 通用控件示範 (CppWindowsCommonControls)