入力した文字を末端で改行して結合

解決


3日目で発狂  2006-01-11 08:55:20  No: 60234

よろしくおねがいします。
わたしは簡単なチャットプログラムを作ろうとしていますが文字表示のところで躓いています。
ボタンが押されたときの操作として
case IDC_BTN1:

GetWindowText(hWndEdit2,sBuff,79);
SetWindowText(hWndEdit1,sBuff);
wsprintf(sBuff,"%s\r\n",sBuff);

としています。
具体的にどういう結果を求めているかというと
EDITのところに[abcd]と打ってボタンを5回押したとすると
abcd
abcd
abcd
abcd
abcd
と表示されるようにしたいのです。

どうかよろしくお願いします。


3日目で発狂  2006-01-11 08:56:52  No: 60235

あとSDKで作っています。
よろしくおねがいします。


瀬戸っぷ  2006-01-11 09:07:46  No: 60236

EM_SETSELで最後を選択(?)して、
EM_REPLACESELで追加…だったかな。

> GetWindowText(hWndEdit2,sBuff,79);
> SetWindowText(hWndEdit1,sBuff);
> wsprintf(sBuff,"%s\r\n",sBuff);

だったら…
hWndEdit1からGetWindowText()して、hWndEdit2からGetWindowText()したモノを連結してから
hWndEdit1へSetWindowText()でしょうか。
バファサイズには要注意ですけど。


3日目で発狂おさまる。  2006-01-11 22:31:16  No: 60237

回答ありがとうございます。
GetWindowText(hWndEdit1,sBuff,サイズに応じて);
GetWindowText(hWndEdit2,sBuff2,サイズに応じて);
wsprintf(sBuff3,"%s\r\n%s\",sBuff,sBuff2);
SetWindowText(hWndEdit1,sBuff3);

うまく表示されるようになりましたが一行目に必ず改行がはいってしまって
はじめの行だけおそらく\r\nで改行されてしまっています。

あとこの場を借りてもうひとつ質問します。
EDITBOXに文字を入力して変換してエンターを押して確定します。
そのあとのエンターで上記のボタンのような操作をさせるにはどうしたらよいでしょうか?よろしくお願いします。


RAPT  2006-01-12 01:29:05  No: 60238

> wsprintf(sBuff3,"%s\r\n%s\",sBuff,sBuff2);
if( sBuff が空っぽ ){
    SetWindowText(hWndEdit1,sBuff2);
}else{
    wsprintf(sBuff3,"%s\r\n%s\",sBuff,sBuff2);
    SetWindowText(hWndEdit1,sBuff3);
}
って感じでどうでしょう?

実際には、GetWindowText() の前に GetWindowTextLength() を
使っているでしょうから、ここで取得した結果で判定することに
なるだろうとは思いますが。

> EDITBOXに文字を入力して変換してエンターを押して確定します。
> そのあとのエンターで上記のボタンのような操作をさせるには
> どうしたらよいでしょうか?よろしくお願いします。
やったことないけど、EN_UPDATE あたり?
もしくはサブクラス化して WM_CHAR, WM_KEYDOWN あたりを
拾うのかな?
もしかしたら、ImmXxxxxx関係のAPIでIMEの状態も判定する必要も
あるのかも?(←やったことないですが。。)


3日目で発狂  2006-01-12 07:51:16  No: 60239

RAPTさん回答ありがとうございます。
if( sBuff が空っぽ ){
    SetWindowText(hWndEdit1,sBuff2);
}else{
    wsprintf(sBuff3,"%s\r\n%s\",sBuff,sBuff2);
    SetWindowText(hWndEdit1,sBuff3);
}
と回答していただきましたが、わたしもまったく同じことをバイト中に考えておりましたw

実際に使えそうだということが確認できたのでうれしかったです。
EDITBOXについてはまだあいまいな点があります。
ヒントをいただいたのでそれで調べてみます。
最初の質問が解決したので
解決とさせていていただきます。
回答していただいた瀬戸っぷ さん  RAPTさん  本当にありがとうございました。
また質問したときはよろしくお願いします。


3日目で発狂  2006-01-12 09:41:29  No: 60240

スクロールをオートで右にスクロールさせるには
ES_AUTOHSCROLLです。
スクロールを自動で上にスクロールさせる(ENTERしたとき)には
ES_AUTOVSCROLLですが

スクロールを自動で下にスクロールさせるにはどうしたらよいのでしょうか?

普通のチャットプログラムは自動で下にスクロールがあわされているのでとても不思議です。


RAPT  2006-01-12 11:44:59  No: 60241

このスレッドは既に終了した上、質問内容が本スレと異なっています。
新規に質問したい事があれば、新スレッドを立ててください。

> 普通のチャットプログラムは自動で下にスクロールがあわされているのでとても不思議です。
# どうもスレ主の表現の上下が普通の表現と逆のような気がするが、

> スクロールを自動で下にスクロール
が文字列が下に移動するように見せる事であれば、先頭行に改行文字を
追加すればよいのでは、ってことになると思うのだが。


三日目で発狂  2006-01-13 07:47:28  No: 60242

すいません。

回答ありがとうございます。

理解できました。ほんとすいません。


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

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






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