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

ここでは、リッチエディットコントロールクラスCRichEditCtrlの基本的な使い方を説明する。


リッチエディットコントロールの初期化処理
ダイアログボックスでCRichEditCtrlクラスのコントロールを使用する場合、 次のようにダイアログボックスを表示する前にAfxInitRichEdit関数を呼び出す必要がある。
	AfxInitRichEdit();
この処理は通常、アプリケーションクラスのInitInstance関数内で実行する。 ダイアログベースのアプリケーションの場合は、当然ながらDoModal関数の実行前になる。
(ダイアログを1度閉じ、再度開く前にはこの処理は不要)

文字書式属性の取得と変更
リッチエディットコントロールの文字書式属性は、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関数を使用して変更した属性を設定する。
背景色の変更
リッチエディットコントロールの背景色を変更するには、CRichEditCtrl::SetBackgroundColor関数を使用すればよい。
	m_Rich1.SetBackgroundColor(FALSE, RGB(255,0,0));	// 1番目の引数はFALSEにすること

目次へ