EditBoxで改行文字が文字化け&改行倍増 – プログラミング – Home

EditBoxで改行文字が文字化け&改...
 
通知
すべてクリア

[解決済] EditBoxで改行文字が文字化け&改行倍増


こっとん
 こっとん
(@こっとん)
ゲスト
結合: 20年前
投稿: 7
Topic starter  

OS:Windows2000SP4
VC++6.0SP6適用済み

リソースエディタでウィンドウを作りそこにEditBoxを貼り付け、「改行を許可」「垂直スクロ
ールバー」「垂直オートスクロール」「複数行」のチェックを入れました。
ここにSetWindowText、及びSetDlgItemText両方で試したのですが、「あいうえお\nかきくけ
こ」といった「\n」の改行文字が入った文字列を送っているのですが、表示が「あいうえお・か
きくけこ」のように「・」となってしまい、改行されていません。
尚、そのように文字化けされたものをGetWindowTextで取得しMessageBoxで見てみるときちん
と改行として認識はされています。
けれどこのような表示では非常にわかりにくく困っています。
何かこれには理由があるのでしょうか?

また、次にこのEditBoxに入力した内容をファイルに書き込むという処理を書きました。
GetWindowText(GetDlgItem(hWnd,EDIT_MAIN),str,256);
fputs(str,fp);
すると入力で改行した部分が1改行が2改行、つまり改行が倍増してしまいます。
けれどこのstrをMessageBoxで見てみるときちんとした普通の改行です。
これはどういった理由から起こるのでしょうか?
どなたかご存知の方いらっしゃいましたら教えてください。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

あいうえお\r\nかきくけこ」を送ってみて。


返信引用
こっとん
 こっとん
(@こっとん)
ゲスト
結合: 20年前
投稿: 7
Topic starter  

ありがとうございました!
\rを入れるとテキストボックスの表示自体は大丈夫になりました。
けれどもうひとつの問題があり、GetDlgItemText(またはGetWinowText)でEditBoxの内容を取
得しそれをfputsでファイルに書き込むと1改行が2改行になる問題は治りませんでした。
もしもこれについてご存知でしたら教えていただけませんか?
----------
FILE *fp;
char tmpStr[256];

fp = fopen(C:\\samp_w.txt,w);
GetDlgItemText(hwnd,TXT_MAIN,tmpStr,256);
MessageBox(hwnd,tmpStr,",0);
fputs(tmpStr,fp);
fclose(fp);

--------
EditBoxの内容
あいうえお
かきくけこ

MessageBoxの出力
あいうえお
かきくけこ

ファイル出力
あいうえお

かきくけこ

---------------------
のようになります。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

fopen(C:\\samp_w.txt,w);
のデフォルトモードがテキストモードだったはず(MSDNでご確認を・・)
バイナリーモードでのオープンをお勧めします

テキストモードの場合、自分の意図とは関係なく、改行コードが付加され
データとして書き込まれます

バイナリーモードでは、自分の書き込んでいないデータ(改行)は書き込みません

ただし、テキストモードは読み込み時には「改行」をはずして読み込んでくれるんじゃ
なかったっけ(うろ覚えのため...MSDNでご確認を・・)


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>fopen(C:\\samp_w.txt,w);
のまま書き込む場合は \r を消す必要があります。

あいうえお ← この末尾は\r
← ここは\r\n
(\nの前に勝手に\rが入ってる)

woodさんのいうとおり、バイナリモードならそのままでOKです。


返信引用
こっとん
 こっとん
(@こっとん)
ゲスト
結合: 20年前
投稿: 7
Topic starter  

本当にありがとうございました!
今までバイナリモードとテキストモードがあることは知っていたのですが違いを把握しておら
ず、改行の変換が違ってくるんですね!
ぜんぜん問題なくファイルからの読み込みも書き込みも、もちろんEditBoxへの表示も成功しま
した。
こんな早急なお返事をいただけて非常に助かりました。
またどうしても困ったこと、調べにくいことなど問題が出ましたら質問させていただきます。
私もこういうところで質問に答えられるようになるよう精進します!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました