XP, VC++2005, MFC を使用しています。
問題は、ダイアログ上のエディットボックスをマウスでクリックしたときに、
エディットボックス内のテキストを全選択した状態にしたいのですが、
エディットボックスのEN_SETFOCUSハンドラ内で
MyEdit.SetSel( 0, -1 );
としてもクリックした位置でカーソルが点滅するだけで、テキスト全体を
選択できません。
どなたか、解決の方法についてご教授をお願いします。
おそらくエディットのWM_LBUTTONDOWNハンドラ内で選択位置の変更を
行っているからでしょう。
私がやってみてうまくいった方法を紹介します。
void CMyEdit::OnLButtonDown(UINT nFlags, CPoint point)
{
if (GetFocus() != this)
{
SetFocus();
SetSel(0, -1);
}
else
{
CEdit::OnLButtonDown(nFlags, point);
}
}
原因はKerryさんの仰る通りだと思います。
因みに以下でもいけました。
MyEdit.PostMessage(EM_SETSEL, (WPARAM)0, (LPARAM)-1);
Kerryさん、FUKUさん
早速のレス有難うございます。
お二人の書いた方法で試したところ、うまく動作することが出来ました。
>おそらくエディットのWM_LBUTTONDOWNハンドラ内で選択位置の変更を
>行っているからでしょう。
これについては、WM_LBUTTONDOWNのイベントは拾ってないので心当たりが
なかったですが、、、
ただ、EN_SETFOCUSで処理しようとしたことが、そもそもマズかったような
気がします。
ひとまず目的の動作は達成できたので、解決とさせて頂きます。
有難うございました!