リッチ エディット テキスト操作を使用する方法

アプリケーションはメッセージを送信して、リッチ エディット コントロール内のテキストを取得または検索できます。 選択したテキストまたは指定したテキスト範囲を取得できます。

選択したテキストをリッチ エディット コントロールで取得するには、EM_GETSELTEXT メッセージを使用します。 テキストは、指定した文字配列にコピーされます。 配列が、選択したテキストと終端の null 文字を保持するのに十分な大きさである必要があります。

指定したテキスト範囲を取得するには、EM_GETTEXTRANGE メッセージを使用します。 このメッセージと併用される TEXTRANGE 構造体は、取得するテキスト範囲を指定するか、テキストを受信する文字配列を指します。 ここでも、アプリケーションは、指定されたテキストと終端の null 文字に対して配列が十分な大きさであることを確認する必要があります。

リッチ エディット コントロールで文字列を検索するには、EM_FINDTEXT または EM_FINDTEXTEX メッセージを使用するか、Unicode と同等の EM_FINDTEXTW および EM_FINDTEXTEXW を使用します。 意図しないバージョンと併用される FINDTEXT 構造体は、検索するテキスト範囲と検索する文字列を指定します。 拡張バージョンでは、FINDTEXTEX 構造体が使用されます。この構造体は、同じ情報を指定し、検出されたテキストの文字範囲の始点と終点も受け取ります。 検索で大文字と小文字が区別されるかどうかなどのオプションも指定できます。

知っておくべきこと

テクノロジ

前提条件

  • C/C++
  • Windows ユーザー インターフェイス プログラミング

手順

リッチ エディット テキスト操作の使用

次の関数例では、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 Input Method Editor (IME) 関数にも対応しています。これを使用すると、ユーザーは、ホット キーを使用して 16 進数と Unicode 間で変換できます。 詳細については、「HexToUnicode IME」を参照してください。

リッチ エディット コントロールの使用

Windows コモン コントロールのデモ (CppWindowsCommonControls)