マウスクリックでエディットボックス内全選択 – プログラミング – Home

マウスクリックでエディットボックス内全...
 
通知
すべてクリア

[解決済] マウスクリックでエディットボックス内全選択


チャイ
 チャイ
(@チャイ)
ゲスト
結合: 16年前
投稿: 24
Topic starter  

XP, VC++2005, MFC を使用しています。

問題は、ダイアログ上のエディットボックスをマウスでクリックしたときに、
エディットボックス内のテキストを全選択した状態にしたいのですが、
エディットボックスのEN_SETFOCUSハンドラ内で
 MyEdit.SetSel( 0, -1 );
としてもクリックした位置でカーソルが点滅するだけで、テキスト全体を
選択できません。
どなたか、解決の方法についてご教授をお願いします。


引用未解決
トピックタグ
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

おそらくエディットのWM_LBUTTONDOWNハンドラ内で選択位置の変更を
行っているからでしょう。

私がやってみてうまくいった方法を紹介します。

void CMyEdit::OnLButtonDown(UINT nFlags, CPoint point)
{
if (GetFocus() != this)
{
SetFocus();
SetSel(0, -1);
}
else
{
CEdit::OnLButtonDown(nFlags, point);
}
}


返信引用
FUKU
 FUKU
(@FUKU)
ゲスト
結合: 17年前
投稿: 73
 

原因はKerryさんの仰る通りだと思います。

因みに以下でもいけました。
MyEdit.PostMessage(EM_SETSEL, (WPARAM)0, (LPARAM)-1);


返信引用
チャイ
 チャイ
(@チャイ)
ゲスト
結合: 16年前
投稿: 24
Topic starter  

Kerryさん、FUKUさん

早速のレス有難うございます。
お二人の書いた方法で試したところ、うまく動作することが出来ました。

>おそらくエディットのWM_LBUTTONDOWNハンドラ内で選択位置の変更を
>行っているからでしょう。

これについては、WM_LBUTTONDOWNのイベントは拾ってないので心当たりが
なかったですが、、、
ただ、EN_SETFOCUSで処理しようとしたことが、そもそもマズかったような
気がします。

ひとまず目的の動作は達成できたので、解決とさせて頂きます。
有難うございました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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