• ベストアンサー

ボタンの表示の色、フォントを変更したい

VC++でプログラミングしています。 MFCのダイアログベースのEXEを造っています。 ダイアログにはボタンとエディットボックスを貼り付けています。 私がやりたいのは以下のことです。 ・ボタンの色を設定したい ・ボタン、エディットボックスに表示する文字の色を設定したい ・ボタン、エディットボックスに表示する文字のフォント(サイズ)を設定したい プロパティでサイズ変更すると全体に反映されてしまうので、個々の コントロールについて制御したいと思っています。 ヘルプで調べて、それらしい関数を見つけるのですが使い方がわかりません。 VCを始めたばかりで、クラスの理解がまだ浅いです。。。 関数の説明は理解できても、「じゃあ、コードはどう書くの?」という状態です。 「○○ は ×× のメンバではありません」と、よく怒られてます。。。 識者の方、ご教授願います。 コードがどうなるのか知りたいので、簡単なサンプルコードがあると助かります。 また、質問ではないのですが、「この関数は○○をする」というのではなく、 「○○をするにはこの関数を使う」という様に調べられる、お勧めの書籍、 Webなどがありましたら教えてください。 今後の勉強に役立てたいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • jun_l
  • ベストアンサー率18% (4/22)
回答No.1

下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に示しておきます。

参考URL:
http://market.agr.tottori-u.ac.jp/ken/tech.html
nabezo-
質問者

お礼

アドバイス、ありがとうございました。 大変参考になりました。 #お礼が遅くなり、すみません。

nabezo-
質問者

補足

回答ありがとうございます。 フォント設定では以下のようなコードにしてみました。 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 *」と キャストしている部分はどうなるのでしょうか。 いろいろとお手数おかけしますが、よろしくお願い致します。

その他の回答 (2)

  • osaosa42
  • ベストアンサー率60% (20/33)
回答No.3

MFCなら ----メンバ変数---------- CFont m_pFont; CButton m_Button1;//ダイアログデータ ----------------------- -------------プログラム------------------- void CHogeDlg::SetMyFont(){ m_pFont = new CFont; m_pFont->CreatePointFont(1000,"MS 明朝"); m_Button1.SetFont(m_pFont); } ------------------------------------------ とやれば、比較的簡単にフォントの変更ができますよ。

nabezo-
質問者

お礼

アドバイス、ありがとうございました。 大変参考になりました。 #お礼が遅くなり、すみません。

  • osaosa42
  • ベストアンサー率60% (20/33)
回答No.2

MSDNライブラリ(VisualStudio付属)で「CYellowEdit」と入れて検索してみてください。 すると、「返送メッセージの処理 : 再利用可能なコントロールの例」というところにサンプルソースが載っています。

関連するQ&A

  • VC++のエディットボックスの非表示

    VC++で、ダイアログを作りました。 エディットボックスを置いているのですが、 このエディットボックスは始めは非表示(入力を受け付けない)にするため、 このエディットボックスのプロパティにある "Disable"をtrueにして"Visible"もtrueにしました。 そこまではよかったのですが、 「入力」ボタンを押すと、エディットボックスが白く表示され、入力を受け付けるというようにしたいのですが、 エディットボックスのプロパティを変更する関数というのはあるのでしょうか? いろいろ検索などをしているのですが、方法がわかりません。よろしくお願いします。

  • VC++2010 ボタンなどのレイアウト大きさ変更

    VC++2010のMFCで現在開発しているんですが、 ボタン、スタティックテキスト、エディットボックスの文字の大きさを変更したいんですが どのようにすればいいかわかりません。よろしくお願いします。 またステータスバーに色を付けたいんですがどのようにすれば色を付けることができますか? よろしくお願いします。

  • スピンボタンの制御

    VCにて、ダイアログにエディットボックスとスピンボタンのセットを複数配置したプログラムを作成しているのですが、スピンボタンの単位を-1.0~1.0と0.1刻みとしたいので、設定範囲を-10~10としOnVScroll()にて1/10して対応するエディットボックスに表示しようと試行錯誤中ですが、どのスピンボタンが押下されたか判断する知識ありません。コントロール識別子(nID)が判れば編集して、対応するエディットボックスにSetDlgItemTextで設定できるのですが、OnVScroll()の引数からnIDの取得方法を教えていただけないでしょうか。

  • ダイアログ、ボタンについて

    VC++でプログラミングしています。 MFC AppWizard(exe) でダイアログベースで造っています。 以下の方法を教えてください。 ・EXE起動時、ダイアログのサイズを変更したい。 起動時に画面サイズをチェックして、画面いっぱいの大きさにしたいため。 ・EXE起動後、ボタンに表示している文字列を変更したい。 識者の方、ご教授願います。

  • Win32 API エディットボックス内文字列の色変更

    Win32 APIについて質問です。 (Microsoft Visual Studio .NET 2002、XP、API) エディットコントロールに表示されている文字列の 色(またはフォント)を変更したいと思っています。 エディットボックスに「0」という数字を入力し その後「更新ボタン」をクリックすると、「0」の 文字色が赤色(または赤太文字)へ変更される という具合です。 Win32 APIを始めて間もない者(Cも始めて間もないです) なので、かなり苦戦しております。 「SendMessage() 」みたいな関数を使用しエディット ボックスのハンドルへメッセージを送ることで 実現させるのかなぁ程度しか理解しておりません。 ご存じの方すいませんがよろしくお願いします。

  • VC++2010のラジオボタンの選択されている読取

    VC++2010のラジオボタンの現在選択されている読み取りのことで質問なんですが、 自分は今VC++2010 MFC でソフトウェアを作っています。 そこで質問なんですが、 ラジオボタンが7つあり、その中からどれが選択されているか知る関数(例:エディットボックスの文字列を読み取る関数GetWindowText()関数など)が分からなかったので質問させていただきました。 よろしくお願いします。

  • 表示文字のフォントサイズのみ変更

    お世話になっております。 VC2005を使用しております。 ピクチャーに文字を表示したいと思っております。 文字の色変更はSetTextColorで可能ですが、フォントサイズの変更は どのようにすればよいのでしょうか? CFontDialogを使用すると可能だとは思いますが、その他の設定は変更したくないため、使用したくありません。 よろしくお願いします。

  • バックグラウンドカラーを変更したいのですが。。

    VisualC++でプログラムを組んでいる者です。 ダイアログベース上に定義したコンボボックスとエディットボックスに対して、あるトリガーがひかれると、背景色を赤色に変更したいと思っているのですが、うまく出来ません。 CWnd::OnCtlColor関数を使用するべきなのかなとは思っているのですが、書き方が理解できてないです。 アドバイス宜しくお願いします。

  • MFCのウィンドウサイズ変更について

    いつもお世話になっております。 WindowsXP、vc++6.0のMFCを利用してダイアログベースのアプリを作成しています。 作成したアプリのウィンドウにはエディットボックスが貼り付けてありますが エディットボックスの文字列が長くなると全ての文字が見えなくなります。 エディットボックスの横幅を最初から極端に長くするといいかもしれませんが、 できる限りウィンドウサイズはコンパクトに作りたいので、ウィンドウサイズを ユーザーで変更できるようにし、合わせてエディットボックスも引っ張られるようにしたいです。 ※拙い文章だと思うので、下の方にやりたいことのイメージ図を書きました。 解決方法や参考サイトなど知っておられましたら教えて頂けないでしょうか。 よろしくお願いします。 ※イメージ図 アプリ起動時 ┌───────────┐ │Title              │ ├───────────┤ │┌────────┐  │ ││EditBox       │  │ │└────────┘  │ └───────────┘    ↓ 横サイズ変更(EditBoxの横幅もウィンドウサイズに引っ張られて伸びる) ┌────────────────┐ │Title                     │ ├────────────────┤ │┌─────────────┐  │ ││EditBox               │  │ │└─────────────┘  │ └────────────────┘

  • 親ウィンドウの領域外でも表示されるエディットボックスについて

    親ウィンドウの領域外でも表示されるエディットボックスについて VisualStudio2005でMFCアプリを作っています。 親ウィンドウに指定したコントロールの領域外でも 表示されるようなエディットボックスを作りたいのですが、方法はありますか? イメージとしては、ダイアログ上にボタンがあって、 そのボタンを押すとエディットコントロールが表示され、入力待ちとなるようなものです。 このエディットには改行を入力させるのですが、改行してウィンドウサイズを大きくしていくと、 ダイアログの下の端でエディットボックスが途切れてしまいます。 ダイアログの下より大きくなっても全体が表示されるようにしたいんです。 このエディットの生成は次のような感じで行っています。 DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_AUTOHSCROLL | ES_MULTILINE | ES_WANTRETURN; m_edit.Create(dwStyle, rect, this/*ダイアログ*/, -1); よろしくお願いします。

専門家に質問してみよう