SetWindowTextで改行

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ジキル

SetWindowTextで改行

#1

投稿記事 by ジキル » 13年前

hWndHit = CreateWindowEx(WS_EX_CLIENTEDGE,"edit","",WS_CHILD|WS_VISBLE|ES_READONLY|ES_AUTOVSCROLL|WS_VSCROLL|ES_AUTOHSCROLL|WS_HSCROLL,10,275,320,120,hWnd,(HMENU)HIT_TEXT_BOX,hInstance,NULL)



sprintf(hit,"%s : %s\r\n",in,target)
SetWindowText(hWndHit,hit)

今このようになってるのですが、改行されません。
文字化けにもならないし、\r\nがどっかいってしまいます。

WM_TIMERでループしながら結果(変数hit)を表示したいのですがどうしたらいいですか?

VC++2010です。

ジキル

Re: SetWindowTextで改行

#2

投稿記事 by ジキル » 13年前

あぁ、すみません。
ES_MULTILINEが入ってなかったです。

すぐに入れたのですが変化なしでした…

アバター
bitter_fox
記事: 607
登録日時: 13年前
住所: 大阪府

Re: SetWindowTextで改行

#3

投稿記事 by bitter_fox » 13年前

SetWindowText関数は指定した文字列を新しく設定する関数なので、前の文字列は保持されません。
ですので、

コード:

char textBefor[1024];

GetWindowText(hWnd, textBefor, 1024);

wsprintf(hit,"%s%s : %s\r\n", textBefor, in, target); // オーバーフローしないように気を付けてください。
SetWindowText(hWndHit, hit);
と言った風にしてあげる必要があります。

アバター
kimuchi
記事: 163
登録日時: 13年前
住所: 東京

Re: SetWindowTextで改行

#4

投稿記事 by kimuchi » 13年前

コード:

    int length = GetWindowTextLength(hWndHit);
    sprintf(hit,"%s : %s\r\n",in,target)
    SendMessage( hWndHit, EM_SETSEL, (WPARAM)length, (LPARAM)length);
    SendMessage( hWndHit, EM_REPLACESEL, 0, (LPARAM)hit );
こんなのもありですかね?
エディットの終端に文字を追加(挿入)

閉鎖

“C言語何でも質問掲示板” へ戻る