よろしくおねがいします。
わたしは簡単なチャットプログラムを作ろうとしていますが文字表示のところで躓いています。
ボタンが押されたときの操作として
case IDC_BTN1:
GetWindowText(hWndEdit2,sBuff,79);
SetWindowText(hWndEdit1,sBuff);
wsprintf(sBuff,"%s\r\n",sBuff);
としています。
具体的にどういう結果を求めているかというと
EDITのところに[abcd]と打ってボタンを5回押したとすると
abcd
abcd
abcd
abcd
abcd
と表示されるようにしたいのです。
どうかよろしくお願いします。
あとSDKで作っています。
よろしくおねがいします。
EM_SETSELで最後を選択(?)して、
EM_REPLACESELで追加…だったかな。
> GetWindowText(hWndEdit2,sBuff,79);
> SetWindowText(hWndEdit1,sBuff);
> wsprintf(sBuff,"%s\r\n",sBuff);
だったら…
hWndEdit1からGetWindowText()して、hWndEdit2からGetWindowText()したモノを連結してから
hWndEdit1へSetWindowText()でしょうか。
バファサイズには要注意ですけど。
回答ありがとうございます。
GetWindowText(hWndEdit1,sBuff,サイズに応じて);
GetWindowText(hWndEdit2,sBuff2,サイズに応じて);
wsprintf(sBuff3,"%s\r\n%s\",sBuff,sBuff2);
SetWindowText(hWndEdit1,sBuff3);
うまく表示されるようになりましたが一行目に必ず改行がはいってしまって
はじめの行だけおそらく\r\nで改行されてしまっています。
あとこの場を借りてもうひとつ質問します。
EDITBOXに文字を入力して変換してエンターを押して確定します。
そのあとのエンターで上記のボタンのような操作をさせるにはどうしたらよいでしょうか?よろしくお願いします。
> 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の状態も判定する必要も
あるのかも?(←やったことないですが。。)
RAPTさん回答ありがとうございます。
if( sBuff が空っぽ ){
SetWindowText(hWndEdit1,sBuff2);
}else{
wsprintf(sBuff3,"%s\r\n%s\",sBuff,sBuff2);
SetWindowText(hWndEdit1,sBuff3);
}
と回答していただきましたが、わたしもまったく同じことをバイト中に考えておりましたw
実際に使えそうだということが確認できたのでうれしかったです。
EDITBOXについてはまだあいまいな点があります。
ヒントをいただいたのでそれで調べてみます。
最初の質問が解決したので
解決とさせていていただきます。
回答していただいた瀬戸っぷ さん RAPTさん 本当にありがとうございました。
また質問したときはよろしくお願いします。
スクロールをオートで右にスクロールさせるには
ES_AUTOHSCROLLです。
スクロールを自動で上にスクロールさせる(ENTERしたとき)には
ES_AUTOVSCROLLですが
スクロールを自動で下にスクロールさせるにはどうしたらよいのでしょうか?
普通のチャットプログラムは自動で下にスクロールがあわされているのでとても不思議です。
このスレッドは既に終了した上、質問内容が本スレと異なっています。
新規に質問したい事があれば、新スレッドを立ててください。
> 普通のチャットプログラムは自動で下にスクロールがあわされているのでとても不思議です。
# どうもスレ主の表現の上下が普通の表現と逆のような気がするが、
> スクロールを自動で下にスクロール
が文字列が下に移動するように見せる事であれば、先頭行に改行文字を
追加すればよいのでは、ってことになると思うのだが。
すいません。
回答ありがとうございます。
理解できました。ほんとすいません。
ツイート | ![]() |