新規にダイアログベースのプロジェクトを作成する。 プロジェクト名は edit2 としよう。
初期状態のコントロールをすべて削除して、次のようにエディットボックスと ボタンを配置する。
ここではエディットボックスに複数行の文字列を出力することを考える
テキストボックスに複数行の文字を出力することは 1行の文字出力と基本的には同じことですが、若干の注意が必要です。
最初にエディットボックスの「プロパティー」を次のようにします。
| 項目 | 値 | 意味 |
|---|---|---|
| MultiLine | True | 複数行 |
| Want Return | True | 改行したい(改行を許可) |
| Auto HScroll | False | 水平自動スクロールせず |
| Vertical Scroll | True | 垂直スクロールバー |
更にエディット ボックスに変数を次の条件で追加します。
| カテゴリ | 変数の種類 | 変数名 |
|---|---|---|
| value | CString | m_Text |
最後にボタンにイベント ハンドラーを追加して、 OnBnClickedButton1 関数には次のように書き込みをします。
void CCedit2Dlg::OnButton1() { // TODO: この位置にコントロール通知ハンドラ...
CString str;
str = "項目1\r\n項目2\r\n項目3";
m_Text = str;
UpdateData(FALSE);
AfxMessageBox(str);
}
ビルドして、実行しよう。ボタンを押せば、 複数行の文字がエディットボックスに出力され、 同時に同じ文字がメッセージボックスに出力される。
| OS | 改行コード | 書式文字 |
|---|---|---|
| UNIX | LF | \n |
| Windows | CR + LF | \r\n |
Windows の C 言語プログラムの printf 文 などでは改行のための書式文字として、本来は \r\n を使用しないといけないが、 \n を使用しても差し支えないように作ってある。 しかし、エディットボックスの内部では \r\n を使用しないとうまく改行しない。 (エディットボックスに Windows のテキストファイルを表示することを考えている ためのようである。)
しかし AfxMessageBox では \n でもちゃんと改行する。 上のプログラムで \r\n を \n にするとどうなるか実験をしてみよう。