改行したときにカーソルを最終行に持っていきたい

[戻る]
困ってます [E-Mail] 2003/09/29(月) 16:02:39
ダイアログ形式で作っています。
エディットボックスで改行することは出来たのですが、
改行を行うとカーソルが初めの位置に戻ってしまいます。
改行したときにカーソルを最終行(次の行)に持っていきたいのですが、
どのようにすればいいのか分かりません。
どうか教えてください。よろしくお願いします。

ku 2003/09/29(月) 18:55:47
「改行する」とは具体的に何をやってますか?
たとえば
「キーボードでEnterキーを押したときの動作」とか
「エディットコントロールへ改行コードを挿入するコードをxxx()という
関数で実装した」とかです

カーソルの位置設定ならSetSel()で良いと思います

困ってます [E-Mail] 2003/09/30(火) 09:20:52
kuさん指摘ありがとうございます。
キーボードでEnterキーを押したときに画面が消えないようにして、
データの最後に\r\nをつけて改行しています。
MSDNライブラリでSetSelを調べても見つからないので、
できたら詳しく教えてください。お願いします。


switch(pMsg->message){
    case WM_KEYDOWN:
         switch(pMsg->wParam){
            case VK_RETURN:
            UpdateData(TRUE);
            m_Data.GetWindowText(Data);
                 Data = Data + "\r\n";
            m_Data.SetWindowText(Data);
            UpdateData(FALSE);
                 return TRUE;

straysheep 2003/09/30(火) 09:42:05
Web上のMSDNライブラリでは何故か検索できないですね。

SetSel程度ならGoogleあたりで検索すれば
いくらでも説明が見つかるでしょう。

そのくらいの事は自力で調べることができるようになるといいですね。

困ってます [E-Mail] 2003/09/30(火) 09:47:35
[[解決]]
下のようにしたらうまく動きました。
kuさん、straysheepさんありがとうございました。 

switch(pMsg->message){
    case WM_KEYDOWN:
         switch(pMsg->wParam){
            case VK_RETURN:
            UpdateData(TRUE);
            m_Data.GetWindowText(Data);
            Data = Data + "\r\n";
      int len = Data.GetLength();    //追加部分
            m_Data.SetWindowText(Data);
        m_Data.SetSel(len,len);        //追加部分
            UpdateData(FALSE);
            return TRUE;

ku 2003/09/30(火) 12:04:23
解決されたようで良かったですね
下記のようにやっても良かったのか、
特別なルールがあってこれを採用できなかったのか分かりませんが
いちおう参考のために書いておきます

1.ダイアログにエディットコントロールを貼り付ける
2.プロパティで複数行をチェック
3.改行を許可をチェック

古いスレッドには追加発言できません。