您的位置:首页 > 其它

为vc按钮添加背景颜色和字体颜色

2012-05-05 12:25 337 查看
可以通过重载WM_DRAWITEM消息来实现,具体函数如下所示:

void CBtncolorDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)

{

// TODO: Add your message handler code here and/or call default

if(nIDCtl==IDC_BUTTON1) //checking for the button

{

CDC dc;

RECT rect;

dc.Attach(lpDrawItemStruct ->hDC); // Get the Button DC to CDC

rect = lpDrawItemStruct->rcItem; //Store the Button rect to our local rect.

dc.Draw3dRect(&rect,RGB(255,255,255),RGB(0,0,0));

dc.FillSolidRect(&rect,RGB(100,100,255));//Here you can define the required color to appear on the Button.

UINT state=lpDrawItemStruct->itemState; //This defines the state of the Push button either pressed or not.

if((state & ODS_SELECTED))

{

dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT);

}

else

{

dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT);

}

dc.SetBkColor(RGB(100,100,255)); //Setting the Text Background color

dc.SetTextColor(RGB(255,0,0)); //Setting the Text Color

TCHAR buffer[MAX_PATH]; //To store the Caption of the button.

ZeroMemory(buffer,MAX_PATH ); //Intializing the buffer to zero

::GetWindowText(lpDrawItemStruct->hwndItem,buffer,MAX_PATH); //Get the Caption of Button Window

dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//Redraw the Caption of Button Window

dc.Detach(); // Detach the Button DC

}

CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐