通知
すべてクリア
Topic starter
2008年5月28日 8:29 AM
環境 OS:XP VS:.Net2003
エディットボックス上でカーソル位置が行の先頭にあるかどうかを判定したいのです
が、どのように判定したらよろしいでしょうか?
CEditクラス内でそのようなメンバが見当たりませんでしたのでご教授ください。
2008年5月28日 9:08 AM
複数行でない場合は単純に CEdit::GetSel
複数行の場合は CEdit::LineIndex とあわせ技で
Topic starter
2008年6月3日 8:18 AM
組み合わせ技で行えました。
ありがとうございました。
2008年6月3日 10:36 AM
先のコメントでは書かなかったけど MFC っつことでいいよね?
解決ついでにどうやったかを書いてくれると、後で読む人の参考になるのでいいな
C(Rich)Edit::GetSel(s, e); で選択開始位置と選択終了位置が得られる。
ドラッグして複数文字を選択してない状況、つまり、
カレットというか I カーソルというか、の時には開始==終了となる。
複数行選択許可していない場合には s==0 && e==0 で行頭にカレットがある。
複数行選択許可した場合には t=C(Rich)Edit::LineIndex(-1) で
当該行の先頭文字のインデックスがわかるわけで、となると
s==t && e==t であれば当該行の行頭にカレットが有ると判断できるわけだ
複数行選択許可でない場合は自動的に1行目が選択されることになり、
LineIndex(-1) は 0 を返すので、結局のところ
複数行選択許可かどうかに関係なく s==t && e==t で OK! っつわけだ。