- ベストアンサー
ボタンの表示の色、フォントを変更したい
VC++でプログラミングしています。 MFCのダイアログベースのEXEを造っています。 ダイアログにはボタンとエディットボックスを貼り付けています。 私がやりたいのは以下のことです。 ・ボタンの色を設定したい ・ボタン、エディットボックスに表示する文字の色を設定したい ・ボタン、エディットボックスに表示する文字のフォント(サイズ)を設定したい プロパティでサイズ変更すると全体に反映されてしまうので、個々の コントロールについて制御したいと思っています。 ヘルプで調べて、それらしい関数を見つけるのですが使い方がわかりません。 VCを始めたばかりで、クラスの理解がまだ浅いです。。。 関数の説明は理解できても、「じゃあ、コードはどう書くの?」という状態です。 「○○ は ×× のメンバではありません」と、よく怒られてます。。。 識者の方、ご教授願います。 コードがどうなるのか知りたいので、簡単なサンプルコードがあると助かります。 また、質問ではないのですが、「この関数は○○をする」というのではなく、 「○○をするにはこの関数を使う」という様に調べられる、お勧めの書籍、 Webなどがありましたら教えてください。 今後の勉強に役立てたいと思っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下2つについては以下でいけると思います。 class CMyDlg : CDialog { public: CFont m_cFont; //Dlgクラスのメンバとして用意 /* 他のメンバ */ virtual BOOL OnInitDialog(); //初期化 }; BOOL CMyDlg::OnInitDialog() { //TODO:ここでFontを設定しておく(文字の色、サイズなど) //Fontを設定 ((CButton *)GetDlgItem(IDC_BUTTON))->SetFont(&m_cFont,TRUE); //TODO:その他の初期化 return TRUE; } //見易さのために、全角スペースを使っています;; 一番上はBitmapを貼り付けるか、CWndのメンバ関数を使って 塗りつぶすかどうかだと思います。 MFCではなく、C++Builderのページなのですが、少しいじればMFCでも使えるので、参考URLに示しておきます。
その他の回答 (2)
- osaosa42
- ベストアンサー率60% (20/33)
MFCなら ----メンバ変数---------- CFont m_pFont; CButton m_Button1;//ダイアログデータ ----------------------- -------------プログラム------------------- void CHogeDlg::SetMyFont(){ m_pFont = new CFont; m_pFont->CreatePointFont(1000,"MS 明朝"); m_Button1.SetFont(m_pFont); } ------------------------------------------ とやれば、比較的簡単にフォントの変更ができますよ。
お礼
アドバイス、ありがとうございました。 大変参考になりました。 #お礼が遅くなり、すみません。
- osaosa42
- ベストアンサー率60% (20/33)
MSDNライブラリ(VisualStudio付属)で「CYellowEdit」と入れて検索してみてください。 すると、「返送メッセージの処理 : 再利用可能なコントロールの例」というところにサンプルソースが載っています。
お礼
アドバイス、ありがとうございました。 大変参考になりました。 #お礼が遅くなり、すみません。
補足
回答ありがとうございます。 フォント設定では以下のようなコードにしてみました。 m_cFont.CreateFont(40, 0, 0, 0, FW_HEAVY, 0, 0, 0, ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, NULL); これで、ボタンに表示する文字のサイズは変更できました。 何か使い方が違うとか、フォント設定には別の関数があるよ、などの 指摘があればアドバイスをお願いします。 また、この関数には色の設定はありませんでした。 色の設定の関数を知っていれば教えていただけないでしょうか。 #探したんですけど、「これだ!!」というのが見つかりませんでした。。。 あと、エディットボックスの文字のフォントを変更する場合、「CButton *」と キャストしている部分はどうなるのでしょうか。 いろいろとお手数おかけしますが、よろしくお願い致します。