アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。
VC++でプログラムを組んでおり、下記の要領でエディットボックスに文字を表示しています。
_itoa(inputData[i], receivedChar, 16 );//数値を文字列に変換
SetDlgItemText(argThr1->hWnd, IDC_EDIT2, receivedChar);

このとき、エディットボックス内で、任意の位置で改行しながら表示する方法はありますでしょうか?
よろしくお願い致します。
表示例
ABC(改行)
DEF(改行)

A 回答 (2件)

★最初に改行は『\r\n』で表現します。


・Windows の OS は改行を CR+LF の2バイトで表します。それでエディット・ボックスに
 『\r\n』で改行として扱われます。よって文字列に『ABC\r\nDEF\r\n』とすれば2行になります。
 ただし、エディット・ボックスのスタイルが複数行に設定されていないとダメですよ。
 下にサンプルを載せます。

サンプル:
TCHAR szBuff[ 256 ];

wsprintf( szBuff, TEXT("0x%X\r\n2行目\r\n3行目\r\n"), inputData[i] );
SetDlgItemText( argThr1->hWnd, IDC_EDIT2, szBuff );

表示結果:
0xABCD
2行目
3行目

最後に:
・エディット・ボックスのスタイルに『ES_MULTILINE』を指定して下さい。
 設定方法は『CreateWindow』でスタイルを指定するか、ダイアログのエディット・ボックスに
 『ES_MULTILINE』をチェック(TRUE)して下さい。
・以上。おわり。
    • good
    • 0
この回答へのお礼

すみません。
_itoa(inputData[i], receivedChar, 16 );//数値を文字列に変換
SetDlgItemText(argThr1->hWnd, IDC_EDIT2, receivedChar);
で表示するごとに、改行されて表示され続ける方法はないですか?

お礼日時:2007/03/22 13:54

★エディット・ボックスに文字列を行単位で追加していくのかな?


・この場合はエディット・ボックスの機能で『文字列の置換』があります。
 この機能を利用して数値を文字列に変換した内容を行単位で追加していけます。
 方法は『EM_REPLACESEL』というメッセージを利用します。このメッセージは
 エディット・ボックスの範囲選択された文字列を指定の文字列に置換する処理を
 行いますが、カーソル位置にある場所に文字列を挿入する事も可能です。
・挿入する場合は、最初にテキストのサイズを取得して、カーソル位置を最後に移動
 させます。→『EM_SETSEL』メッセージで始点、終点を同じにするとカーソルの移動
 になります。その後に『receivedChar』の文字列を挿入(追加)します。
 下にそのサンプルを載せます。

サンプル:
LONG lSize;

_itoa( inputData[i], receivedChar, 16 );
lSize = (LONG)SendDlgItemMessage( argThr1->hWnd, IDC_EDIT2, WM_GETTEXTLENGTH, 0, 0 );
SendDlgItemMessage( argThr1->hWnd, IDC_EDIT2, EM_SETSEL, (WPARAM)lSize, (LPARAM)lSize );
SendDlgItemMessage( argThr1->hWnd, IDC_EDIT2, EM_REPLACESEL, TRUE, (LPARAM)receivedChar );
SendDlgItemMessage( argThr1->hWnd, IDC_EDIT2, EM_REPLACESEL, TRUE, (LPARAM)TEXT("\r\n") );

最後に:
・上記の方法で複数行のエディット・ボックス内に文字列を行単位で追加していけます。
 ただし、このときに改行コードも追加します。これをしないと行単位になりません。
 この改行コードの追加が最後の『TEXT("\r\n")』という1行です。
・もちろん『receivedChar』の文字列に『TEXT("\r\n")』を追加すれば最後の1行は必要ありません。
・あと『_itoa』関数よりも『wsprintf』関数の『%X』書式制御で変換することをお勧めします。
 これは『_itoa』関数が VC 環境でしか利用できないため、他の処理系ではコンパイルできなくなる
 可能性があるからです。ずっと VC 環境でプログラミングするのならばいいですけど。
・以上。おわり。→下の『参考URL』もどうぞ。

参考URL:http://www.winapi-database.com/Message/EM/EM_REP …
    • good
    • 0
この回答へのお礼

実際にできました。
ありがとうございました。

お礼日時:2007/03/22 20:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A