函数OnCtlColor()如何改变BTN按钮控件字体颜色和背景颜色?

HBRUSHCLogin::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){HBRUSHhbr=CDialogEx::OnCtlC... HBRUSH CLogin::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(255,255,0));
pDC->SetBkColor(RGB(0,0,255));
}

if(nCtlColor==CTLCOLOR_BTN)
{
pDC->SetBkMode(TRANSPARENT);//背景
pDC->SetTextColor(RGB(255,255,0));//字体颜色
} //这里运行之后为什么BTN按钮字体颜色和背景颜色不会改变呢???????????

// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
展开
 我来答
linux驱动开发
推荐于2017-09-26 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:77
采纳率:0%
帮助的人:34.1万
展开全部
CButton *pTxt=(CButton*)GetDlgItem(CTLCOLOR_BTN
);

CDC* pDC=pTxt->GetDC();

CRect rc;

pTxt->GetClientRect(&rc);

CBrush brush;

brush.CreateSolidBrush(RGB(0,250,250));

pDC->FillRect(&rc,&brush);

pDC->SetBkColor(RGB(120,120,250));

pDC->SetTextColor(RGB(0,120,250));
追问
为什么CTLCOLOR_STATIC不需要上述步骤,只要一句就达到目的?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L顶贴
2017-09-26 · TA获得超过140个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:56.2万
引用linux驱动开发的回答:
CButton *pTxt=(CButton*)GetDlgItem(CTLCOLOR_BTN
);

CDC* pDC=pTxt->GetDC();

CRect rc;

pTxt->GetClientRect(&rc);

CBrush brush;

brush.CreateSolidBrush(RGB(0,250,250));

pDC->FillRect(&rc,&brush);

pDC->SetBkColor(RGB(120,120,250));

pDC->SetTextColor(RGB(0,120,250));
展开全部
下面给出的答案,这段代码我运行会崩溃。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式