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

[戻る]
nfs 2009/09/30(水) 23:47:20
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 2009/10/01(木) 10:30:02
エディットボックスにSetFocusしてFALSEを返してみてください。

nfs 2009/10/01(木) 13:13:00
>FALSEを返してみてください。
すみません。FALSEを返すとはどういう意味ですか?

subaru 2009/10/01(木) 13:25:55
WM_INITDIALOGの戻り値です。

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

nfs 2009/10/01(木) 14:36:34
[[解決]]
できました。
subaruさん、ありがとうございました。orz
でも、なぜFALSEを返すとうまくいくのでしょうか?

subaru 2009/10/01(木) 15:04:14
>でも、なぜFALSEを返すとうまくいくのでしょうか?

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

古いスレッドには追加発言できません。