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);
としましたが、うまくいきませんでした。
エディットボックスにSetFocusしてFALSEを返してみてください。
>FALSEを返してみてください。
すみません。FALSEを返すとはどういう意味ですか?
WM_INITDIALOGの戻り値です。
case WM_INITDIALOG:
SetFocus(GetDlgItem(hDlg, IDC_EDIT));
return FALSE;
:
できました。
subaruさん、ありがとうございました。orz
でも、なぜFALSEを返すとうまくいくのでしょうか?
>でも、なぜFALSEを返すとうまくいくのでしょうか?
WM_INITDIALOGの仕様がそのようになっているからでしょう。
TRUEを返すと最初のコントロールにフォーカスが設定される。
それを避けるにはフォーカスを設定してFALSEを返せとMSDNに書いてあります。