- 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を返します。 }
反省。。