RichEdit にフォントを設定する

RichEdit にフォントを設定してテキストを表示します。

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

プログラムの説明

  1. ウインドウに貼り付けた RichEdit にフォントを設定してテキストを表示します。
    RichEdit にテキストを表示する手順は Rich Edit にテキストを表示する を参照して下さい。
  2. フォントのサイズは twips を単位として設定します。
    1 twips は 1/20ポイントに相当します。
    #define で TWIPS を宣言しています。
    フォントの設定には CHARFORMAT 構造体を使います。
    #define     TWIPS       20      //twips(1/20ポイント)
    CHARFORMAT  cfm;    //Rich Edit Char Format
    
  3. WM_CREATE から LoadLibrary() で RICHED32.DLL をロードします。
    CreateWindowEx() で Rich Edit を生成してウインドウに貼り付けます。
    SetWindowText() でテキスト(g_buf)を表示します。
    テキストを選択状態に設定して SetFont() 関数でフォントを設定します。
    フォントの設定が終われば、選択を解除します。
        switch (msg)
        {   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);
                SendMessage(g_hREdit,EM_SETSEL,0,strlen(g_buf));    //TEXT選択
                SetFont();		//フォントの設定
                SendMessage(g_hREdit,EM_SETSEL,-1,0);               //選択解除
                SetFocus(g_hREdit);
                return 0L;
    
  4. フォントを設定する SetFont() 関数です。
    CHARFORMAT 構造体を初期化します。
    dwMask にフラグを設定します。
    今回は20ポイントの太字に設定してみました。
    BOOL SetFont()
    {   memset(&cfm, 0, sizeof(CHARFORMAT));
        cfm.cbSize = sizeof(CHARFORMAT);
        cfm.dwMask = CFM_BOLD | CFM_CHARSET | CFM_COLOR | CFM_FACE |
            CFM_ITALIC | CFM_SIZE | CFM_STRIKEOUT | CFM_UNDERLINE;
        cfm.bCharSet = SHIFTJIS_CHARSET;
        cfm.yHeight = TWIPS*20;     //20ポイント
        strcpy_s(cfm.szFaceName,LF_FACESIZE,"MS ゴシック");
        if (SendMessage(g_hREdit, EM_SETCHARFORMAT, SCF_SELECTION | SCF_WORD, (LPARAM)&cfm) == 0)
        {   MessageBox(NULL, "EM_SETCHARFORMAT失敗です", "Error", MB_OK);
            return FALSE;
        }
        return TRUE;
    }
    

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