VC++初心者です。
おそらく恥ずかしくなるような基本的なことだと思うのですが、質問させてください。
フォームのサイズを変更されたとき、ボタンやエディットボックスの位置を変えたいので
す。どのようにすればいいのでしょうか?
立て続けの質問で申し訳ございませんが、よろしくお願いいたします。
恐らく通常ではOnSize()内の手動で変更かと。
>> Easy dialog control resizer
> http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
私的にはこゆのを使った方が楽カナ、と。
(.NET等でのアンカー位置指定をPG上でやっているのと同等です)
# CodeProjectではダウンロードに登録が必要です (今もフリメは可のハズ?)
FormView上ではやったことは無いですが、多分いけると思います。
玲音 (st.lain)さん、ありがとうございます。
実は、そのOnSize()内で手動で行う方法が分からないのです。
もしご面倒でなければお教え願いませんか。
コントロールも結局はウインドウなので通常のウインドウを移動したり
サイズを変更したりするのとなんら変わりませんよ。
ただフォームのサイズに合わせてサイズやら位置やらを自分で計算する
必要があるってだけのことです。
紙の上でフォームがあって、このコントロールの位置が何ピクセルの位置で
サイズがこれだけだからこっちのコントロールはこの位置とかやってみると
計算方法も見当がつくんではないかと思います。
PATIOさん、ありがとうございます。
質問の仕方がいけなかったのかもしれません。
計算方法は面倒でしょうけれど、コツコツすれば分かるだろうと思います。
分からないのは現在、ハマッてることを具体的に書きますと、スタティックを配置し、そ
れを移動する方法がわからないのです。
この質問の前の質問で、MSFlexGridはMoveWindowを使って行うことがわかり、そのように
行いましたが、スタティックの場合、変数名を入力してもその後の選択肢にMoveWindowが
現れないので困っています。
あまりにもあたりまえの処理なのか、Webを探しても見つからないのです。
よろしくお願いいたします。
ボタンなどは、MoveWindowで動かせるようですね。
スタティックテキストは無理なのでしょうか……
> スタティックテキストは無理なのでしょうか……
もちろん可能です。
スタティックテキストにユニークなIDを付けて、
IDからCWnd*を取得すればよいでしょう。
たいちうさん。
いつもありがとうございます。
CWndを取得したらMoveWindow関数が使えるようになりました。
ちょっと補足。
VC++のリソースエディタでスタティックコントロールを配置すると
エディター上で確認できるコントロールIDは、IDC_STATICになると思います。
変更しないとスタティックコントロールのIDはみんなIDC_STATICになるので
IDC_STATICではコントロールを特定できません。
ですから、このままでは直接制御が出来ないわけです。
制御が必要なスタティックコントロールの場合、自分でIDC_XXX...(XXX...は任意)
を付け直す必要があります。こうして付け直したIDを使えば、
スタティックコントロールの制御も可能になります。
コントロールのIDをつける時は、同じダイアログ上に同じIDが複数はいると
制御が出来なくなるので注意が必要です。