ダイアログのエディット領域へのフォーカスの移動

[戻る]
秋桜 [E-Mail] [HomePage] 2004/10/22(金) 01:24:59
 過去ログにも似たような書き込みがあったのですがいまいち理解できなかったので
似たようなことを聞かせていただきます。

 私は今SDKで開発していて、ダイアログ作成時にエディット領域にフォーカスを行く
ようにしたいのですがどうしてもダイアログ作成時にフォーカスを移動させることが
できません。今の現在はダイログでの処理で WM_INITDIALOG にて
 SetFocus(GetDlgItem(hDlg,エディタのID)) ということでフォーカスが移動できるか
な?
と思い実行してみたのですがまったくうまくいきません・・・、なにかいい方法はない
ものでしょうか?

ご返信のほどよろしくお願いいたします。

秋桜 [E-Mail] [HomePage] 2004/10/22(金) 01:26:12
なんとなく読みにくいかと思ったのでなんですが再投稿させていただきました。

 過去ログにも似たような書き込みがあったのですがいまいち理解できなかったので
似たようなことを聞かせていただきます。

 私は今SDKで開発していて、ダイアログ作成時にエディット領域にフォーカスを行く
ようにしたいのですがどうしてもダイアログ作成時にフォーカスを移動させることが
できません。今の現在はダイログでの処理で WM_INITDIALOG にて
 SetFocus(GetDlgItem(hDlg,エディタのID)) ということでフォーカスが移動できる
かな?と思い実行してみたのですがまったくうまくいきません・・・、なにかいい
方法はないものでしょうか?

ご返信のほどよろしくお願いいたします。

シャノン 2004/10/22(金) 09:27:49
WM_INITDIALOG の説明をよーく読んでください。

通常、フォーカスを受け取ることができるコントロールの中で、タブオーダーが一番最
初になっているコントロールが、最初にフォーカスを受け取ります。
wParam には、そのコントロールのハンドルが入っています。
そのコントロールにフォーカスをセットするのであれば TRUE を、そうでない場合は 
FALSE を返します。

…ちゃんと FALSE、返してますか?

メイ 2004/10/22(金) 09:47:03
そのコントロールを動的に作っているのではなければ、
VCメニューバーの「レイアウト→タブオーダー」を使って
初期表示時にフォーカスを当てたいEDITを1番に設定すると可能かと思います。

上記の方法でタブオーダーを設定すると、リソースが変更されます。
「BEGIN〜END」の間に宣言された順で
コントロールが作成されて、それがフォーカス順とされるのかな、多分。

以下の例では「IDC_EDIT1」→「OK」ボタン→「キャンセル」ボタンの順にフォーカス移動します。
////////////////////////////////////////////
//
// Dialog
//
 ・
 ・
 ・

BEGIN

    EDITTEXT        IDC_EDIT1,21,32,40,14,ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,260,7,50,14
    PUSHBUTTON      "キャンセル",IDCANCEL,260,23,50,14
    LTEXT           "TODO: ダイアログのコントロールをここに配置",IDC_STATIC,50,90,200,
                    8
END

 ・
 ・
 ・

秋桜 [E-Mail] [HomePage] 2004/10/23(土) 19:57:40
[[解決]]
 返事が遅くなってしまい申し訳ありませんでした。メイさん、シャノンさんが
書いてくださったように変更を加えたらきちんとフォーカスが思うように動くように
なりました。本当にありがとうございました。

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