我想改变button的字体颜色,WM_CtlColer消息中的代码如下,但不知为何字体颜色不会变
HBRUSH CChuangkouDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if (pWnd-> GetDlgCtrlID()==IDC_BUTTON3) 
        { 
            pDC-> SetTextColor(RGB(255,0,255));     //字体颜色
       //     pDC-> SetBkColor(RGB(0, 255, 255));       //字体背景色 
return (HBRUSH)::GetStockObject(WHITE_BRUSH);       


// TODO: Return a different brush if the default is not desired
else
return hbr;
}帮我看下吧  谢谢

解决方案 »

  1.   

    这种方式对button确实是无效的,可以使用CButtonST这个button类,网上有下载的
      

  2.   

    你的代码根本没有用DrawText写入文字,所以字体颜色不会变 。你可以参考下面的代码试试。
    TCHAR szText[MAX_PATH + 1] = {0};
    GetDlgItemText( nCtlColor, szText, MAX_PATH ); // 获取按钮的文字
    CRect rc;
    GetDlgItem(nCtlColor)->GetClientRect(rc);
            
    pDC->FillRect(&rc, COLOR_BTNFACE); // 用默认的按钮颜色填充背景
    pDC-> SetTextColor(RGB(255,0,255));    //字体颜色 
    //    pDC-> SetBkColor(RGB(0, 255, 255));      //字体背景色 
    pDC->DrawText(szText, -1, rc, DT_LEFT|DT_SINGLELINE|DT_END_ELLIPSIS);
      

  3.   

    对于按钮需要自绘或者Ower绘
    MS东西不知道为什么不统一,呵呵