- ベストアンサー
PC移行時にコントロールのサイズが変わる問題
- プロジェクトファイルを別のPCに移すと、コントロールのサイズが変化します。
- 解像度の違いが原因と思われますが、比較しても同じサイズです。
- PCごとに同じサイズにする設定方法を教えていただけないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VC++/MFCで書いてますので、VBは余り良く知りませんが・・・ システム設定の問題なので、対処方法は同じかと システム設定(カストマイズ)の違いによるものだと思います。 (画面のプロパティーで設定されるもの) GetSystemMetrics API でシステム設定を入手してみれば、互いのシステム設定の違いが分かります。 同じサイズのコントロールにするなら、MoveWindow APIで位置/サイズ指定すれば実現できます。
その他の回答 (2)
- peanus15
- ベストアンサー率36% (7/19)
もっと自助能力を持たないとエンジニアにはなれませんよ 回答されたものをよく調べましたか? >> システム設定(カストマイズ)の違いによるものだと思います。 >>(画面のプロパティーで設定されるもの) > はい、おっしゃられます通り、画面→プロパティ→DPI > の設定でございました。 設定項目は何項目もありますよ。 そのために GetSystemMetrics API も紹介しました。 GetSystemMetrics API にはどれだけパラメータがありますか? 設定項目がたくさんあるから、パラメータもいろいろあるんです。 手抜き調査ではダメです。 >> MoveWindow APIで位置/サイズ指定 > 今検索させていただいておりますが、この方法は > すべてのコントロールの座標を指定する、ということでございましょうか・・?? > (コントロール数が多いので、もしそうでございましたら > 少し大変かなぁ。。などと^^; 勘違いでございましたら > 申し訳ございません) 当方は2~30あるものでも使用解像度を GetSystemMetrics 調べ、色、サイズ、 フォント、フォーカス等、また他との関連で EnableWindow / OnCtlColor などを駆使してユーザーにマニュアルを見なくても分かるようなソフト作りをしています。 また、現在フォーカスのあるコントロールの操作方法などコメントエリアに案内も出してます・
お礼
peanus15様 どうもありがとうございます!!m(_ _)m 2度もアドバイスいただき恐縮でございます。 2台のPC上でのコントロールサイズの比とこれらDPIの比が ほとんど同じだったので、間違いないと思い込んでおりました^^; ご指摘どうもありがとうございます。 コントロール数が80もある状態でございまして、もしコントロールの 位置とサイズすべてをForm1_Load時に調節するとかなり重くなるかな?などと 懸念いたしました次第でございます。。。orz >GetSystemMetrics >EnableWindow / OnCtlColor 勉強になります、どうもありがとうございます^^また検索してまいります。 あとエンジニアと呼んでくださり光栄でございますm(_ _)m 実はVBに初めて触って以来、毎晩楽しくて仕方がなく趣味で頑張っております。 従いまして、 >現在フォーカスのあるコントロールの操作方法などコメントエリアに案内 というところまでできれば、自分にとっては神の領域でございます 'o' できるようになるまで頑張りますので、これからも是非アドバイスいただけないでしょうか。 peanus15様のようなお詳しい方にご閲覧・アドバイスいただけて光栄でございます。 完了のご報告になりませんでしたが、お礼が遅くなるのは嫌なので まず御礼だけさせていただきます!どうもありがとうございました!!!!!!
補足
(お礼後の捕捉になります) この度はアドバイスいただき誠にありがとうございましたm(_ _)m DPI取得方法がようやくわかりました。 コントロール数より画像種類数の方が圧倒的に少なかったため、画像サイズを 変更することにいたしました。 MainForm頭で Dim dpi As Graphics = Me.CreateGraphics Dim LBL_DpiH = bmpLBL.Height * dpi.DpiX / 96 Dim LBL_DpiW = bmpLBL.Width * dpi.DpiX / 96 といたしまして、 画像変更の度に LBL.Image = New Bitmap(bmpLBL, LBL_DpiW , LBL_DpiH) で調整できるようになりました^^ (画像サイズの変え方が分からず苦労いたしました。。。orz) 他にアドバイスいただいたものについては今晩引き続き調査させていただきます^^。 またお礼ポイントでございますが、1回目にいただいたアドバイスの方が 今後閲覧していただく方にお役に立ちそうでございますので、そちらに つけさせていただきます。 この度はご親切にどうもありがとうございました!!!m(_ _)m
- BellBell
- ベストアンサー率54% (327/598)
解像度って言ってるのが、DPIの話かどうかですが。 フォントサイズ、文字サイズ、XPの場合でどのような名前だったか覚えてないですが。 96DPIが、120DPIになっているのではないかなという気がします。 通常は、VB2008であればその設定は関係ないはずですが(あるのかな?)。 VB6以前は思いっきり影響しましたので、念のため確認してください。
お礼
どうもありがとうございます!!m(_ _)m >96DPIが、120DPIになっているのではないかなという気が おっしゃる通りでございました。DPIを知りませんでしたので 調べてみましたところ、数字まであたっておりました^^ しかし対応方法がわかりません。。。orz おそらく、 >VB2008であればその設定は関係ないはずですが(あるのかな?)。 とおっしゃられる通り、どこかの設定を行っておけばDPI変化に 対応してくれるような機能が付いているような気がするのでございますが・・・ (期待しすぎでしょうか??^^;) もう少し頑張ってまいります! この度はご親切にどうもありがとうございました!!!m(_ _)m
お礼
どうもありがとうございます!!!^^ >画面のプロパティーで設定されるもの はい、おっしゃられます通り、画面→プロパティ→DPI の設定でございました。 >MoveWindow APIで位置/サイズ指定 今検索させていただいておりますが、この方法は すべてのコントロールの座標を指定する、ということでございましょうか・・?? (コントロール数が多いので、もしそうでございましたら 少し大変かなぁ。。などと^^; 勘違いでございましたら 申し訳ございません) この度はご閲覧・アドバイスいただき誠にありがとうございました!!!m(_ _)m