2 yiketangtang yiketangtang 于 2015.06.01 23:27 提问

如何使用CColorDialog改变编辑框的输入文本的颜色

图片说明

这是我的颜色按键处理函数
void CMFCChatDlg::OnBnClickedColor()
{
// TODO: 在此添加控件通知处理程序代码
CColorDialog colorDlg;
if (colorDlg.DoModal() == IDOK)
{
color = colorDlg.GetColor();
CFile colorfile;
colorfile.Open("colortemp.dat", CFile::modeCreate | CFile::modeWrite);
colorfile.Write(&m_color, sizeof(m_color));
colorfile.Close();
}
}
HBRUSH CMFCChatDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO:  在此更改 DC 的任何特性
//  if(nCtlColor==CTLCOLOR_EDIT) 可以实现发送框颜色变化~
// {
//pDC->SetBkMode(TRANSPARENT);  
if(nCtlColor==CTLCOLOR_EDIT &&
                       pWnd->GetDlgCtrlID()==IDC_INPUT)
{
    pDC->SetTextColor(m_color); //文字颜色
//  pDC->SetBkColor(RGB(233,233,220)); //背景颜色
// HBRUSH b=CreateSolidBrush(RGB(233,233,220));//背景颜色
// }
// TODO:  如果默认的不是所需画笔,则返回另一个画笔
hbr = (HBRUSH)m_brush;
}
return hbr;

}

运行结果并不能改变字体,请问怎么解决

2个回答

devmiao
devmiao   Ds   Rxr 2015.06.01 23:29
yiketangtang
yiketangtang 我用了richedit弄出来了,但发送一次消息就需要再次设置颜色,怎么只让修改时才会改变颜色
2 年多之前 回复
a1193561652
a1193561652   Rxr 2015.06.01 23:40

在SetTextColor()前把m_color输出看看,是不是没取到颜色值。另外设置Edit的文字颜色通常不是响应WN_CTLCOLOR消息的吗?

a1193561652
a1193561652 回复yiketangtang: 什么格式?字体还是自动换行什么的?
2 年多之前 回复
yiketangtang
yiketangtang 但是每次发送后输入新的内容时格式都会变成默认的,怎么不让它回复默认?
2 年多之前 回复
yiketangtang
yiketangtang 使用richedit做出来了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片