VS中,如何通过调用字体对话框来改变一个控件的文本的颜色

这段代码可以让字体改变,但改变不了颜色。有懂得告诉我一下,谢谢。... 这段代码可以让字体改变,但改变不了颜色。有懂得告诉我一下,谢谢。 展开
 我来答
huangqihui21
2013-10-23 · 超过16用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:27.6万
展开全部
响应WM_CTLCOLOR消息,
在OnCtlColor函数里:
HBRUSH CXXXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: 在此更改 DC 的任何属性

if (pWnd->GetDlgCtrlID() == IDC_EDIT) //控件ID
{
pDC->SetTextColor(m_color); //你的字体颜色
}

// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
追问
我知道OnCtlColor()函数可以改变控件外观,我想知道pdc->SetTextColor(m_color);这句代码为什么不起作用啊?我是按照书上敲的代码。谢谢
追答
因为每次GetDC得到的DC都是不同的,你的pdc->SetTextColor(m_color)只是对当次输出文字有效。下次窗口绘制控件的时候又被默认颜色取代了。
你可以试一下放两个按钮,第一个函数里GetDC,改变字体颜色,然后TextOut,第二个直接输出,仍然是黑色。
而OnCtlColor是窗口每次绘制控件前调用的,这样就可以保证绘制的控件字体的颜色是你想要的颜色。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式