ダイアログのエディット領域へのフォーカスの移動 – プログラミング – Home

ダイアログのエディット領域へのフォーカ...
 
通知
すべてクリア

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


秋桜
 秋桜
(@秋桜)
ゲスト
結合: 21年前
投稿: 20
Topic starter  

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

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

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


引用未解決
トピックタグ
秋桜
 秋桜
(@秋桜)
ゲスト
結合: 21年前
投稿: 20
Topic starter  

なんとなく読みにくいかと思ったのでなんですが再投稿させていただきました。

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

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

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


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

WM_INITDIALOG の説明をよーく読んでください。

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

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


返信引用
メイ
 メイ
(@メイ)
ゲスト
結合: 21年前
投稿: 16
 

そのコントロールを動的に作っているのではなければ、
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

 ・
 ・
 ・


返信引用
秋桜
 秋桜
(@秋桜)
ゲスト
結合: 21年前
投稿: 20
Topic starter  

返事が遅くなってしまい申し訳ありませんでした。メイさん、シャノンさんが
書いてくださったように変更を加えたらきちんとフォーカスが思うように動くように
なりました。本当にありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました