改行したときにカーソルを最終行に持っていきたい – プログラミング – Home

改行したときにカーソルを最終行に持って...
 
通知
すべてクリア

[解決済] 改行したときにカーソルを最終行に持っていきたい


困ってます
 困ってます
(@困ってます)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

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


引用未解決
トピックタグ
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

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

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


返信引用
困ってます
 困ってます
(@困ってます)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

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
 straysheep
(@straysheep)
ゲスト
結合: 22年前
投稿: 6
 

Web上のMSDNライブラリでは何故か検索できないですね。

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

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


返信引用
困ってます
 困ってます
(@困ってます)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

下のようにしたらうまく動きました。
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
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

解決されたようで良かったですね
下記のようにやっても良かったのか、
特別なルールがあってこれを採用できなかったのか分かりませんが
いちおう参考のために書いておきます

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました