Rich Edit にテキストを表示する

ウインドウに Rich Edit Control を貼り付けてテキストを表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. RichEdit には「文字列の検索/置き換え、特定の文字列の色やサイズを変えて表示、データの入力と出力」 など、TEXT EDITOR を作成する上で便利な機能が備わっています。
  2. 新規プロジェクトから空のプロジェクトを作成して下さい。
  3. 後部のリンクからソースコードを取得して [プロジェクト][既存項目の追加] からプロジェクトに追加します。
  4. [デバッグ] を選択してビルドに続いて実行すると、定義した文字列が表示されます。

プログラムの説明

  1. RichEdit を使うときは richedit.h をインクルードします。
    g_hREdit; が Rich Edit の Handle です。
    g_buf が表示する文字列です。
    #include <richedit.h>
    
    // Defines, constants, and global variables
    #define     IDC_RICHEDIT    (WM_APP + 0)
    HINSTANCE   g_hInst= NULL;
    HWND        g_hWnd=  NULL;
    HWND        g_hREdit= NULL;
    HMODULE     hRtLib= NULL;
    
    LPSTR       g_buf=
    {   "Rich Edit Box\n"
        "0123456789\n"
        "タブの設定\n"
        "1234567890123456789012345678901234567890\n"
        "0   1   2   3   4   5\n"
        "6   7   8   9\n"
        "A   B   C   D\n"
    };
    
  2. WinMain() は何時もと同じです。
  3. WM_CREATE から LoadLibrary() で RICHED32.DLL をロードします。
    CreateWindowEx() で Rich Edit を生成してウインドウに貼り付けます。
    0,0,0,0 が表示座標とサイズですが、WM_SIZE: で設定するのでゼロにしています。
    SetWindowText() でテキスト(g_buf)を表示します。
        {   case WM_CREATE:
                hRtLib = LoadLibrary("RICHED32.DLL");
                g_hREdit = CreateWindowEx(WS_EX_CLIENTEDGE,"RICHEDIT","",
                        WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE | WS_HSCROLL |
                        WS_VSCROLL | ES_AUTOVSCROLL | ES_NOHIDESEL,
                        0,0,0,0,
                        hWnd,(HMENU)IDC_RICHEDIT,g_hInst,NULL);
                SetWindowText(g_hREdit,g_buf);
                return 0L;
    
  4. WM_SIZE で Rich Edit のサイズをウインドウに合わせて設定します。
            case WM_SIZE:
                GetClientRect(hWnd,&rc);
                MoveWindow(g_hREdit,rc.left,rc.top,rc.right,rc.bottom,TRUE);
                break;
    
  5. WM_DESTROY で RICHED32.DLL を開放して下さい。
            case WM_DESTROY:
                DestroyWindow(g_hREdit);
                if (hRtLib)     FreeLibrary(hRtLib);
                PostQuitMessage(0);
                return 0L;
    

超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード

超初心者のプログラム入門(Win32API C++)