- 2019-4-7
- Visual C++
VC OnInitDialog で、コントロールにSetFocus()できない
VCのダイアログで、初期処理後にダイアログに張り付けたEdit等のコントロールにフォーカスを設定したいことが多々ある。
今回、obj.SetFocusしてもフォーカスが設定されない。。
でっ、解決したんだけど、久しぶりにVCでコーディングして、ハマったので備忘。
すげー時間を無駄にした。。。
説明とソース
ダイアログベースのプロジェクト作成後、VCで自動生成される、
void xxxxxx::OnInitDialog()
は、戻り値の初期状態が、
return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUEを返します。
となっている。
フォーカスをコントロールに設定する場合は、コメントのとおり、
return FALSE;
とするが正しかった。。
※今回、コメントが削除してしまって気付かず、新しいプロジェクト作成して気付いた。。。。アホや。
// 【フォーカスしない】
void xxxxxx::OnInitDialog()
{
初期処理
:
:
obj.SetFocus();
return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUEを返します。
}
// 【フォーカスする】
void xxxxxx::OnInitDialog()
{
初期処理
:
:
obj.SetFocus();
return FALSE; // フォーカスをコントロールに設定した場合を除き、TRUEを返します。
}
反省。。







