在利用颜色对话框时,无法实现通过颜色对话框对 TEXT 控件 中 文本 颜色的设置,谢谢。

解决方案 »

  1.   

    TEXT 控件 中 文本 颜色的设置
    ------
    函数SetTextColor()
      

  2.   

    //选取颜色  
    void CT1Dlg::OnOK() 
    {
       CColorDialog dlg;
       dlg.DoModal();
       crCur = dlg.GetColor();
       Invalidate(TRUE);
    }
    //颜色设置
    HBRUSH CT1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if(nCtlColor == CTLCOLOR_STATIC)
    {
    pDC->SetTextColor(crCur);
    }
    return hbr;
    }
      

  3.   

    1.新建一个基于对话框的应用程序,在对话框上添加一个文本控件,ID:IDC_EDIT12.在CXXXDlg中添加数据成员:
    pirvate:
    HBRUSH m_brMine;  
    COLORREF clr ;3.在CXXXDlg的构造函数中初始化成员:
    clr = RGB(0,0,0); //黑色4.在OnOK中添加代码:
    void CXXXDlg::OnOK() 
    {
    CColorDialog dlg;
    dlg.DoModal();
    clr = dlg.GetColor();
    Invalidate(TRUE);
    }5.利用ClassWizard向导映射XXXDlg的WM_CTLCOLOR消息,并添加代码:
    HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    if ((pWnd->GetDlgCtrlID() == IDC_EDIT1) && (nCtlColor == CTLCOLOR_EDIT))
    {
    pDC->SetTextColor(clr);   //设置红色的文本
    COLORREF bkclr = RGB(255,255,255);
    pDC->SetBkColor(bkclr);     //设置白色的背景
    m_brMine = ::CreateSolidBrush(bkclr);
    return m_brMine;  //作为约定,返回背景色对应的刷子句柄
    }
    else
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    return hbr;
    }
    }
    6.编译执行,在文本框中输入内容,默认为黑色,点OK按钮出现颜色选择框选择颜色确定,文本框中颜色改变