怎样给对话框上的控件设置颜色,如我添加了一个图像框控件(IDC_STC_RECT),属性设为Rectangle,属性框中只能设四种颜色,我怎么在程序中设成其它?

解决方案 »

  1.   

    1。重载OnCtlColor
    2。CDC画
    3。继承
    4。用他方方法,比如Button的,可以用CButtonST
      

  2.   

    OnCtlColor
    同意 stevecrisewu(月亮骑士)
      

  3.   

    同意月亮骑士的方法
    onCtlColor
      

  4.   

    重载WM_CTLCOLOR
    一下是我得一段代码:
    HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    COLORREF clr;
    switch(nCtlColor)
    {
    case CTLCOLOR_STATIC:

    clr = RGB(255,201,255);
    pDC->SetBkColor(clr); //设置粉色的背景

    m_brMine = ::CreateSolidBrush(clr);
    return m_brMine; //返回对应的刷子句柄 case CTLCOLOR_DLG:
    m_brMine = ::CreateSolidBrush(RGB(255,201,255));
    return m_brMine; //返回背景色对应的刷子句柄 case CTLCOLOR_EDIT:
    clr = RGB(160,0,0);
    pDC->SetTextColor(clr);   //设置黑色的文本 clr = RGB(166,210,210);
    pDC->SetBkColor(clr);     //设置淡蓝色的背景

    m_brMine = ::CreateSolidBrush(clr);
    return m_brMine; //返回对应的刷子句柄 default:
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    return hbr;
    }
    }
    多看看MSDN
      

  5.   

    但我想给一个具体的控件上色,比如IDC_STC_MYSTATIC,而不是一类控件CTLCOLOR_STATIC,怎么实现?
      

  6.   

    HBRUSH CMultiDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO: Change any attributes of the DC here
    switch(nCtlColor)
    {
    case CTLCOLOR_STATIC:
    if( pWnd->GetSafeHwnd() == GetDlgItem(IDC_TIP)->GetSafeHwnd() )
    {
    static HBRUSH hbrEdit = ::CreateSolidBrush( RGB(125, 255, 0) );
    pDC->SetBkColor( RGB(255, 0, 0) );
    pDC->SetTextColor( RGB(255, 255, 0) );
    return hbrEdit;
    }
    }
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }