リッチエディットコントロールの文字書式属性は、CHARFORMAT構造体で定義されている。
コントロールのデフォルトの文字書式属性は、CRichEditCtrl::GetDefaultCharFormat関数で取得することができる。
任意に設定したCHARFORMAT構造体を使ってコントロールの文字書式属性を変更するには、
CRichEditCtrl::SetSelectionCharFormat関数を使用する。
以下に、これらを使用してコントロールの文字色を変更し、文字列をボールド体にする例を記述する。
BOOL CXXDlg::OnInitDialog()
{
CDialog::OnInitDialog();
(中略)
CRichEditCtrl* pRich = (CRichEditCtrl*)(GetDlgItem(IDC_RICHEDIT1));
CHARFORMAT cf;
pRich->GetDefaultCharFormat(cf);
cf.dwMask |= CFM_COLOR | CFM_BOLD;
cf.crTextColor = RGB(255, 255, 255);
cf.dwEffects |= CFE_BOLD;
cf.dwEffects &= ~CFE_AUTOCOLOR;
pRich->SetSelectionCharFormat(cf);
return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
}
上記の処理ではCHARFORMAT構造体のデータを取得した後、構造体のdwMaskメンバにCFM_COLORとCFM_BOLD属性を付加しているが、
この処理によって文字色の指定とボールド体の指定が有効となる。
文字列をボールド体にするにはdwEffectsメンバにCFE_BOLD属性を追加すればよい。
また、文字列の色を変更するにはcrTextColorメンバに色を指定するほか、
dwEffectsメンバからCFE_AUTOCOLOR属性を削除する必要がある。
属性を変更したら、CRichEditCtrl::SetSelectionCharFormat関数を使用して変更した属性を設定する。