如何通过控件句柄来设置控件的背景颜色
通过 GetDlgItem(IDC_XXX) 得到控件的句柄,如何通过这个句柄改变控件的背景颜色,而后又恢复原来的颜色?
[最优解释]
GetDC(),GetWindowDC(),SetBkColor(),改回来的话加个定时器将原有颜色缓存起来,到时候恢复
另外不同的控件有不同的方法,比如Rich Edit的EM_SETBKGNDCOLOR
[其他解释]
改变控件的颜色只需要添加WM_CTLCOLOR消息就行了吧
HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何属性
if(pWnd->GetDlgCtrlID() == IDC_BUTTON1)//这里把ID改成你想改的控件就行了啊
{
pDC->SetBkColor(RGB(255,0,255));
hbr = CreateSolidBrush(RGB(255,0,255));
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
[其他解释]
ON_WM_CTLCOLOR_REFLECT() (反射的机制是控件自己)
或者
ON_WM_CTLCOLOR(控件父窗体)
HBRUSH XXXXX::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
{
HBRUSH hbr = CreateSolidBrush(RGB(255,255,255));
// TODO: Change any attributes of the DC here
pDC->SetBKColor(RGB(255,0,0));
// TODO: Return a different brush if the default is not desired
return hbr;
}