关于richedit字体颜色的问题

CN001 2003-09-17 11:58:36
哪位能帮看一下这段代码为什么不能将字体改为红色,
而去掉注释行后,却可以。谢谢

CRichEditCtrl *re=(CRichEditCtrl *)GetDlgItem(IDC_RICHEDIT1);
CHARFORMAT cf;
re->GetDefaultCharFormat(cf);
cf.crTextColor=RGB(255,0,0);
//cf.dwEffects=CFE_ITALIC;
cf.cbSize = sizeof (cf);
::SendMessage (re->m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION,(LPARAM)&cf);
char *p="this is a test!";
re->ReplaceSel(p);
...全文
295 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuYouETong 2003-12-18
  • 打赏
  • 举报
回复
你将内容copy下来, 用Notepad打开,或UltraEdit32打开!效果更好
liuYouETong 2003-12-18
  • 打赏
  • 举报
回复
我这里有很好的代码,是万能的!
Here:


/*************************************************
Function : void SetWordsFont(CRichEditCtrl *richEdit,
LPCTSTR sWord1, COLORREF clr1,
LPCTSTR sWord2, COLORREF clr2,
LPCTSTR sWord3, COLORREF clr3,
LPCTSTR sWord4, CFontDialog *fontDialog)
Class : 无
Description : 对聊天室发送消息内容,按用户定制输出到屏幕上
Input : 9个参数
Output : 无
Return : 无
Remark : 只要调用SetWordsFont()这一个函数就行了,你只要把SetMsg(),Message()
添加到你的cpp文件里就行了!所以你不必管SetMsg()和Message()!
例如一个典型的例子:
张三 哭着 对所有人 说: 你明天有空吗?
某人 表情 某人 动作 内容

Author : liuYou
Date : 2003-12-18 17:35
*************************************************/
void SetWordsFont(CRichEditCtrl *richEdit,
LPCTSTR sWord1, COLORREF clr1, //某人
LPCTSTR sWord2, COLORREF clr2, //表情
LPCTSTR sWord3, COLORREF clr3, //某人
LPCTSTR sWord4, COLORREF clr4, //动作
LPCTSTR sWord5, CFontDialog *fontDialog)//内容
{
Message(richEdit, sWord1, clr1); //张三
Message(richEdit, sWord2, clr2); //哭着
Message(richEdit, sWord3, clr3); //对所有人
Message(richEdit, sWord4, clr4); //说:
SendMsg(richEdit, sWord5, fontDialog->GetColor(), fontDialog);//你明天有空吗?
}

void SendMsg(CRichEditCtrl *richEdit,
LPCTSTR sWord, COLORREF clr,
CFontDialog *fontDialog = NULL)
{
CHARFORMAT cf;

cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_BOLD | CFM_ITALIC | CFM_COLOR;
if (cf.dwEffects & CFE_AUTOCOLOR) cf.dwEffects -= CFE_AUTOCOLOR;
cf.crTextColor = clr;
// Get a color from the common color dialog.
if(fontDialog != NULL)
{
memcpy(cf.szFaceName, (fontDialog->GetFaceName()), 20);
cf.yHeight = fontDialog->GetSize();
cf.crTextColor = fontDialog->GetColor();
/*
这里你可以设置更多的字体样式
*/
}
richEdit->SetSelectionCharFormat(cf);
richEdit->ReplaceSel(sWord);
}

void Message(CRichEditCtrl *rich, LPCTSTR lpszMessage, COLORREF clr)
{
CHARFORMAT cf;
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE;
if (cf.dwEffects & CFE_AUTOCOLOR) cf.dwEffects -= CFE_AUTOCOLOR;
// Get a color from the common color dialog.
cf.crTextColor = clr;
cf.dwMask = CFM_COLOR;
rich->SetSelectionCharFormat(cf);
rich->ReplaceSel(lpszMessage);


}
__________________ 2003-09-17
  • 打赏
  • 举报
回复
你没设dwMask为CFM_COLOR。
这段代码有很多问题。请找一段好一点的代码段(如果它很好,你可能就不会问了)。或者好好看一下CHARFORMAT格式如何使用。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧