質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

Q&A

解決済

1回答

13446閲覧

visual studioのフォームデザイナーによる文字の拡大について

ryo_se

総合スコア68

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

0グッド

0クリップ

投稿2016/05/14 04:16

現在MFCを用いて、visual studioでフォームアプリケーションを作っています。
そこで下記点で迷っています。


コントロール「Static Text」では文字の大きさを変えることができず、変えるにはダイアログのプロパティでフォント設定一括で行わなければならない。
→個別で文字の大きさを変えることはできないか?


①でダイアログのフォントの大きさを変更した時、ダイアログの領域(表示)が拡大されてしまう。またフォームデザイナーの表示倍率の変更(拡大縮小)ができないため作業しづらい
→拡大しないようにしたい or フォームデザイナーの拡大縮小方法があれば知りたい。

ご回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

現在MFCを用いて、visual studioでフォームアプリケーションを作っています。

MFCで作るアプリは「MFCアプリケーション」とした方が伝わりやすいです。「フォームアプリケーション」は.NET Frameworkのフォームのことを指す場合が多いので、混同される可能性があります。両者は全くの別物です。

→個別で文字の大きさを変えることはできないか?

ダイアログ エディターでは、配置するコントロールに個別にフォントを設定することができません。これは仕様なので仕方ありません
コントロールに対して個別にフォントを設定したい場合は、OnInitDialogメソッド内にフォントを設定するコードを実装する必要があります。

コード例

C++

1// TODO: 初期化をここに追加します。 2 3// フォントを作成 4LOGFONT lf; 5this->GetFont()->GetLogFont(&lf); 6lf.lfHeight = 160; // 16.0ポイント(1/10ポイント単位で指定) 7CFont font; 8font.CreatePointFontIndirect(&lf); 9 10// コントロールのフォントを変更 11this->GetDlgItem(IDC_STATIC_MYTEXT)->SetFont(&font); 12 13// フォントハンドルがクローズされないようにする 14font.Detach();

MFCではスタティックテキストのIDがIDC_STATICに固定されていますので、フォントを変更したいものには個別に識別できる名前を付けてください。上記コード例ではIDC_STATIC_MYTEXTにしています。


追記

CFormViewベースの場合は、OnInitialUpdateメソッドに上記コードを追加してください。

投稿2016/05/14 12:23

編集2016/05/15 15:13
catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryo_se

2016/05/15 12:18

教えていただきありがとうございます。 ご指摘の方法で下記手順で実行してみたのですが、OnInitDialogの中に処理が入ってくれません。 ①フォームデザイナー上で、シングルドキュメントのデフォルトのダイアログボックスを右クリック → クラスの追加を行う。 ②作成したクラスにクラスビューでOnInitDialogを追加。 ③ご教示していただいた処理をstaticTextのIDを変更してOnInitDialog内に記述 デバッグしてみたところ、OnInitDialogの中に入らずそのまま起動しています。 他にも別の場所で記述が必要なのでしょうか? MFCアプリは初心者のため、お手数お掛けしますが教えていただければ幸いです。
catsforepaw

2016/05/15 13:21

どうもよく判りません。 まず確認ですが、最初にプロジェクトを作るときに、テンプレートは「Visual C++」の中の「MFCアプリケーション」を選択しましたか? プロジェクト作成時の手順を教えてください。
catsforepaw

2016/05/15 13:36

すみません。過去にダイアログについての質問をされていますね。用語の不一致で混乱してしまいました。
catsforepaw

2016/05/15 13:47

②の手順が違います。 OnInitDialogは特殊なメソッドなので通常のメンバ関数追加と同じ手順では正しく動作してくれません。 とりあえずその手順で追加したOnInitDialogは削除して、以下のような手順で追加してください。 1. ダイアログを右クリックして出てくるメニューの「クラスウィザード...」を選択 2. 「仮想関数」タブに移動し、仮想関数一覧の中から「OnInitDialog」を選択 3. 「関数の追加(A)」ボタンを押してOKする これで、OnInitDialogが正しく追加されます。「TODO: ここに初期化を追加してください」というコメントがあるので、そこに追加してください。
ryo_se

2016/05/15 14:41

仮想関数タブの中にOnInitDialogが存在しません。 OnInitialUpdateならあるのですが・・。 ちなみに関係あるかはわかりませんが、基本クラスは「CFormView」となっています。
catsforepaw

2016/05/15 15:09

理解しました。すでにMFCを使わなくなって何年にもなるので、だいぶ忘れてしまっているようです。 OnInitialUpdateメソッドで良いです。そこにコントロールのフォント設定のコードを書けば反映されます。 説明の手際が悪くてすみませんでした。
ryo_se

2016/05/16 12:33

ありがとうございます、無事個別に大きさを設定することができました。 またもののついでですが、最初の質問に記した② の事象について何かわかれば教えていただければと思います。
catsforepaw

2016/05/16 13:17

②についてですが、ダイアログの大きさはフォントサイズを基準にしているため、フォントサイズを変えるとダイアログのサイズも変わります。縦方向はフォントの平均サイズの1/8単位、横方向は1/4単位で、ダイアログユニット(DLU)と呼ばれています。 また、ダイアログエディターでは表示倍率は指定できないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問