特定のスターティックテキストの FONT を大きくしかつテキストの色を変えるには

[戻る]
みのすけ [E-Mail] 2003/02/24(月) 12:03:29
VC++ 初心者です。
VC++ MFC ダイアログボックス でプログラムを作っています。

質問なのですが、特定のスターティックテキストの FONT を大きくし、
かつテキストの色を変えるには、どうしたら良いでしょうか。


((( FONT は以下の様にして変えました。)))

    ・スターティックテキスト ID:IDC_STATIC1, タイプ:CStatic, メンバー:m_STC1

    << mondai02Dlg.h に追加 >>

    class CMondai02Dlg : public CDialog
    {
    // 構築

    public:

    CMondai02Dlg(CWnd* pParent = NULL);    // 標準のコンストラクタ

    enum { IDD = IDD_MONDAI02_DIALOG };

        CStatic    m_STC1;//***** 追加
        CFont    m_Font;//**** 追加


    << mondai02Dlg.cpp に追加 >>

    BOOL CMondai02Dlg::OnInitDialog()

    m_Font.CreateFont(40,0,0,0,FW_NORMAL,FALSE,FALSE,0, //***** 追加
                      SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,
          CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
                      DEFAULT_PITCH,"MS Pゴシック");
     m_STC1.SetFont(&m_Font)

    *** これで、IDC_STATIC1 の FONT は大きくなりました。***


((( ダイアルグボックスの背景色とスターティックテキストの 色変更は次の様にしまし
た。)))

    ・クラスウィザードで CMondai02Dlg を選びメッセージから WM_CTLCOLOR をクリ
ックし、
     関数の追加をクリック。すると
     HBRUSH CMondai02Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
の関数がつくられる。

    << mondai03Dlg.h に追加 >>
    
    class CMondai03Dlg : public CDialog
    {
    // 構築
    public:
    
    CMondai03Dlg(CWnd* pParent = NULL);    // 標準のコンストラクタ
    CBrush     m_brDlg;//**** 追加
    COLORREF    m_STC1;    //**** 追加 


    << mondai03Dlg.cpp に追加 >>

    BOOL CMondai03Dlg::OnInitDialog()
    m_brDlg.CreateSolidBrush(RGB(255,255,150));//******ダイアログの背景色変
更
    m_STC1=RGB(255,0,0);           //****スタティックテキストの色変更

    << mondai03Dlg.cpp に追加 >>

    HBRUSH CMondai03Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT 
nCtlColor) //******ダイアログの背景色、スターティックテキストの色変更 
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
        switch(nCtlColor){
        case CTLCOLOR_STATIC:
            pDC->SetBkMode(TRANSPARENT);
            pDC->SetTextColor(m_STC1);
            return (HBRUSH) m_brDlg;    
        case CTLCOLOR_DLG:
            return (HBRUSH) m_brDlg;        
        default:
            break;
        }
        return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    }

    *** これでは、全てのスターティックテキスト の色が変わってしまいます。***
    
    特定のスターティックテキスト の色のみを変え、FONT を大きくする方法について
    どなたか、教えて下さい。

n [E-Mail] 2003/02/24(月) 13:14:54
OnCtlColor()の引数のpWndから、GetDlgCtrlID()を使ってコントロールのIDを
取得して比較すれば...。

akey 2003/02/24(月) 15:04:29
http://mfc.acty-net.ne.jp/ml/mfc/msgView.cgi?Lno=44043

. 2003/02/24(月) 16:12:44
ここの解決は何だったの?

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200302/03020083.txt

wood 2003/02/24(月) 23:30:08
>*** これで、IDC_STATIC1 の FONT は大きくなりました。***

>質問なのですが、特定のスターティックテキストの FONT を大きくし、
>かつテキストの色を変えるには、どうしたら良いでしょうか。

今回FONTはあまり関係ないのではないですか?

みのすけ [E-Mail] 2003/02/25(火) 12:49:27
[[解決]]
おかげ様で解決しました。
下記の H.P が良くわかりました。
http://iclub.to/bbs/fujimon.html

古いスレッドには追加発言できません。