エディットコントロールの文字列が勝手に全て選択状態になります。 – プログラミング – Home

エディットコントロールの文字列が勝手に...
 
通知
すべてクリア

[解決済] エディットコントロールの文字列が勝手に全て選択状態になります。


nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

Vista SP1
VC2008 Express Edition
SDK

ダイアログにエディットボックスを貼りつけています。
WM_INITDIALOGで
エディットボックスに文字列をコピーすると、勝手に全て選択状態になります。
SendMessage(GetDlgItem(hDlg, IDC_EDIT), WM_SETTEXT, 0, (LPARAM)szString);
選択状態を回避したいのですが、どうすればいいでしょうか?

ちなみに直後に
SendMessage(GetDlgItem(hDlg, IDC_EDIT), EM_SETSEL, (WPARAM)-1, (LPARAM)0);
としましたが、うまくいきませんでした。


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

エディットボックスにSetFocusしてFALSEを返してみてください。


返信引用
nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

>FALSEを返してみてください。
すみません。FALSEを返すとはどういう意味ですか?


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

WM_INITDIALOGの戻り値です。

case WM_INITDIALOG:
SetFocus(GetDlgItem(hDlg, IDC_EDIT));
return FALSE;
  :


返信引用
nfs
 nfs
(@nfs)
ゲスト
結合: 16年前
投稿: 48
Topic starter  

できました。
subaruさん、ありがとうございました。orz
でも、なぜFALSEを返すとうまくいくのでしょうか?


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>でも、なぜFALSEを返すとうまくいくのでしょうか?

WM_INITDIALOGの仕様がそのようになっているからでしょう。
TRUEを返すと最初のコントロールにフォーカスが設定される。
それを避けるにはフォーカスを設定してFALSEを返せとMSDNに書いてあります。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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