エディットボックスでの改行

解決


HSL32  2004-11-14 04:13:18  No: 55157

テキストに
あいうえおかきくけこ\r\nさしすせそたちつてと
のような文書があるとします。

これを、
fin.ReadString(ss);
で取得し、それをエディットボックスに
m_edit1.SetWindowText(ss);
(m_edit1は、適当なコントロール変数)
のように出力しても、[\r\n]のところで改行されないのですが、
どこがいけないのでしょうか?
もし、これらの方法では出来ない場合、どのようにすれば良いですか?


瀬戸っぷ  2004-11-14 07:36:37  No: 55158

> テキストに
> あいうえおかきくけこ\r\nさしすせそたちつてと
> のような文書があるとします。

\r\nは実際の改行ですか?
それとも普通に「\r\n」という文字ですか?

> fin.ReadString(ss);
> で取得し、それをエディットボックスに
> m_edit1.SetWindowText(ss);
> (m_edit1は、適当なコントロール変数)

実際の改行だった場合は、CStdioFile::ReadString()の解説をもう一度読み直して下さい。
実際の改行コードでない場合は改行コードに置換する処理が必要です。
また、エディトボックスが複数行のスタイル(ES_MULTILINE)になっている必要があります。


HSL32  2004-11-14 08:45:43  No: 55159

\r\nは、実際の改行ではなく文字です。
エディトボックスは複数行のスタイルです。
改行コードに置き換えは、どういう処理(記述)をすれば良いのですか?

文字の\r\nと、改行コードでは何が違うのですか?


瀬戸っぷ  2004-11-14 09:21:35  No: 55160

> \r\nは、実際の改行ではなく文字です。
> 改行コードに置き換えは、どういう処理(記述)をすれば良いのですか?

では、置き換え処理して下さい。
MFCは使っていないのでよく判りませんが、CString::Replace()辺りでできませんかね。
ss.Replace("\\r\\n", "\r\n");
でしょうか。

> 文字の\r\nと、改行コードでは何が違うのですか?

文字列での「\r\n」はCのソース中では"\\r\\n"と書くカタチになります。
メモリ上には 0x5c 0x72 0x5c 0x6e となって、制御コードが含まれません。
実際の改行コードの場合、Cのソース上では"\r\n"と書き、
メモリ上では 0x0d 0x0a と制御コードになります。

http://www.page.sannet.ne.jp/mtoga/lang/c/bih-c_20.htm
この辺とか参考になりますかね。

# エディトボックスの改行って"\r\n"でなく"\n"だけだったかな???


HSL32  2004-11-14 10:41:07  No: 55161

ss.Replace("\\r\\n", "\r\n");
を使い、置き換えたところ、無事改行することができました。
ありがとうございました。

何度もすみませんが、CString型では無く、char型を使う場合に
ss.Replace()のような便利な関数はありますか?
もし無いのでしたら、みなさんはどのように置き換えているのですか?


瀬戸っぷ  2004-11-14 22:32:50  No: 55162

> 何度もすみませんが、CString型では無く、char型を使う場合に
> ss.Replace()のような便利な関数はありますか?
> もし無いのでしたら、みなさんはどのように置き換えているのですか?

char型の配列での文字列ってコトですよね?
とりあえず、一発で変換できる方法はないので地道に変換します。
"\\r\\n"と"\r\n"ではサイズも違いますから。
strtok()で切り出して処理するか、strchar()で検索して置き換えるとか、
配列を自分で先頭から調べて置き換え&詰めるとか。

# ある程度はCString::Replace()のソースが参考になるかも知れませんが。


HSL32  2004-11-15 01:37:59  No: 55163

CString型の場合は、
ss.Replace("\\r\\n", "\r\n");

char型の場合は、一つ一つ地道に置き換えることで、
改行することが出来ました。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加