フォームのサイズ変更に伴ってコントロールの位置を変えたい – プログラミング – Home

フォームのサイズ変更に伴ってコントロー...
 
通知
すべてクリア

[解決済] フォームのサイズ変更に伴ってコントロールの位置を変えたい


TRON
 TRON
(@TRON)
ゲスト
結合: 17年前
投稿: 16
Topic starter  

VC++初心者です。
おそらく恥ずかしくなるような基本的なことだと思うのですが、質問させてください。

フォームのサイズを変更されたとき、ボタンやエディットボックスの位置を変えたいので
す。どのようにすればいいのでしょうか?

立て続けの質問で申し訳ございませんが、よろしくお願いいたします。


引用未解決
トピックタグ
玲音 (st.lain)
 玲音 (st.lain)
(@玲音 (st.lain))
ゲスト
結合: 17年前
投稿: 89
 

恐らく通常ではOnSize()内の手動で変更かと。

>> Easy dialog control resizer
> http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
私的にはこゆのを使った方が楽カナ、と。
(.NET等でのアンカー位置指定をPG上でやっているのと同等です)

# CodeProjectではダウンロードに登録が必要です (今もフリメは可のハズ?)

FormView上ではやったことは無いですが、多分いけると思います。


返信引用
TRON
 TRON
(@TRON)
ゲスト
結合: 17年前
投稿: 16
Topic starter  

玲音 (st.lain)さん、ありがとうございます。

実は、そのOnSize()内で手動で行う方法が分からないのです。
もしご面倒でなければお教え願いませんか。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

コントロールも結局はウインドウなので通常のウインドウを移動したり
サイズを変更したりするのとなんら変わりませんよ。
ただフォームのサイズに合わせてサイズやら位置やらを自分で計算する
必要があるってだけのことです。
紙の上でフォームがあって、このコントロールの位置が何ピクセルの位置で
サイズがこれだけだからこっちのコントロールはこの位置とかやってみると
計算方法も見当がつくんではないかと思います。


返信引用
TRON
 TRON
(@TRON)
ゲスト
結合: 17年前
投稿: 16
Topic starter  

PATIOさん、ありがとうございます。

質問の仕方がいけなかったのかもしれません。
計算方法は面倒でしょうけれど、コツコツすれば分かるだろうと思います。
分からないのは現在、ハマッてることを具体的に書きますと、スタティックを配置し、そ
れを移動する方法がわからないのです。
この質問の前の質問で、MSFlexGridはMoveWindowを使って行うことがわかり、そのように
行いましたが、スタティックの場合、変数名を入力してもその後の選択肢にMoveWindowが
現れないので困っています。
あまりにもあたりまえの処理なのか、Webを探しても見つからないのです。

よろしくお願いいたします。


返信引用
TRON
 TRON
(@TRON)
ゲスト
結合: 17年前
投稿: 16
Topic starter  

ボタンなどは、MoveWindowで動かせるようですね。
スタティックテキストは無理なのでしょうか……


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> スタティックテキストは無理なのでしょうか……

もちろん可能です。
スタティックテキストにユニークなIDを付けて、
IDからCWnd*を取得すればよいでしょう。


返信引用
TRON
 TRON
(@TRON)
ゲスト
結合: 17年前
投稿: 16
Topic starter  

たいちうさん。
いつもありがとうございます。

CWndを取得したらMoveWindow関数が使えるようになりました。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ちょっと補足。
VC++のリソースエディタでスタティックコントロールを配置すると
エディター上で確認できるコントロールIDは、IDC_STATICになると思います。
変更しないとスタティックコントロールのIDはみんなIDC_STATICになるので
IDC_STATICではコントロールを特定できません。
ですから、このままでは直接制御が出来ないわけです。
制御が必要なスタティックコントロールの場合、自分でIDC_XXX...(XXX...は任意)
を付け直す必要があります。こうして付け直したIDを使えば、
スタティックコントロールの制御も可能になります。
コントロールのIDをつける時は、同じダイアログ上に同じIDが複数はいると
制御が出来なくなるので注意が必要です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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