CHARFORMAT

typedef struct _charformat {
  UINT     cbSize;
  DWORD    dwMask;
  DWORD    dwEffects;
  LONG     yHeight;
  LONG     yOffset;
  COLORREF crTextColor;
  BYTE     bCharSet;
  BYTE     bPitchAndFamily;
  TCHAR    szFaceName[LF_FACESIZE];
} CHARFORMAT;


cbSize
Type: UINT
指定结构的大小,以字节为单位。在将结构传递给富编辑控件之前,必须设置此成员。
设置一:
CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);
设置二:
CHARFORMAT cf={sizeof(cf)};

dwMask
相当于总阀 线路连接到房间的电灯 要使用灯还需要 打开房间内的 开关
如果总阀上没有线路 房间内装上开关 也是无效的如 dwEffects 这个设置

Type: DWORD
包含要设置的有效信息或属性的成员。该成员可以是以下值中的0、1或多个。

CFM_ALL == CFM_EFFECTS | CFM_SIZE | CFM_FACE |CFM_OFFSET | CFM_CHARSET

CFM_BOLD 生效粗体;

CFM_CHARSET 使成员 bCharSet 生效;

CFM_COLOR crTextColor 和 CFE_AUTOCOLOR 生效 cf.crTextColor = RGB(0, 0, 255);

CFM_EFFECTS ===CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK

CFM_FACE 生效szFaceName _tcscpy_s(cf.szFaceName, “宋体”);

CFM_ITALIC 这宏的值使CFM_EFFECTS 生效

CFM_OFFSET 使yOffset 生效

CFM_PROTECTED dwEffects 的成员 CFE_PROTECTED 是有效的

CFM_SIZE yHeight 这个成员生效 cf.yHeight = 180;

CFM_STRIKEOUT dwEffects 的成员 CFM_STRIKEOUT 是有效的 字体增加删除线
CFM_UNDERLINE. dwEffects 的成员 CFE_UNDERLINE 是有效的 字体下面增加下划线

dwEffects
Type: DWORD
字体特效。这个成员可以是下列的组合值
CFE_AUTOCOLOR 这文本颜色是 GetSysColor(COLOR_WINDOWTEXT) 的返回值

CFE_BOLD 字体加粗

CFE_DISABLED RichEdit 2.0及以后版本:字符的阴影会偏移3/4点或1个像素,以较大的像素显示。

CFE_ITALIC 字体是斜体的

CFE_STRIKEOUT Characters are struck.

CFE_PROTECTED 受保护的字体 尝试去修改 会收到 受保护通知码 (EN_PROTECTED)
EN_PROTECTED

penProtected = (ENPROTECTED *) lParam;

yHeight
Type: LONG

字体高度, in twips (1/1440 of an inch or 1/20 of a printer’s point).

yOffset
Type: LONG

字符偏移量,在twips中,从基线开始! 如果这个成员的值是正的,字体是上标的 ,如果是符数 字体是下标的。

crTextColor
Type: COLORREF
文本的颜色。如果指定了CFE_AUTOCOLOR字符效果,则忽略该成员。要生成COLORREF,使用RGB宏。

bCharSet
Type: BYTE

字符集的值。bCharSet成员可以是为LOGFONT结构的lfCharSet成员指定的值之一。Microsoft Rich Edit 3.0可能会覆盖这个值,如果它对目标字符无效。

bPitchAndFamily
Type: BYTE

字体家族和音高。该成员与LOGFONT结构体的lfPitchAndFamily成员相同。

要关闭格式化属性,请在dwMask中设置适当的值,但不要在dweeffects中设置相应的值。例如,要关闭斜体,可以设置CFM_ITALIC,但不设置CFE_ITALIC。。

BOOL Cdemo2App::InitInstance()
{
// TODO: call AfxInitRichEdit2() to initialize richedit2 library.\n"	
	AfxInitRichEdit();
	Cdemo2Dlg dlg;
	dlg.DoModal();
	return FALSE;
}
BOOL Cdemo2Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	// TODO: Add extra initialization here
	
	CHARFORMAT cf = { sizeof(cf) };
	cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_BOLD;
	cf.crTextColor = RGB(0, 255, 0);
	cf.yHeight = 240;
	_tcscpy_s(cf.szFaceName, "隶书");
	m_hist.SetDefaultCharFormat(cf);
	m_hist.SetWindowText("【系统】欢迎进入LQM聊天室");
	//追加文字
	int nLen = m_hist.GetTextLength();
	m_hist.SetSel(-1, -1);
	m_hist.ReplaceSel("\r\n【提醒】警惕聊托,骗子,请勿透露联系方式!");
	//选择追加文字并设置字体
	cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_BOLD | CFM_UNDERLINE;
	cf.dwEffects = CFE_UNDERLINE;
	_tcscpy_s(cf.szFaceName, "宋体");
	cf.yHeight = 180;
	cf.crTextColor = RGB(255, 0, 0);
	m_hist.SetSel(nLen-6, -1);
	m_hist.SetWordCharFormat(cf);
	m_hist.SetSel(-1, -1);




	return TRUE;  // return TRUE  unless you set the focus to a control
}
void Cdemo2Dlg::OnBnClickedOk()
{
	// TODO: Add your control notification handler code here
	//CDialogEx::OnOK();

	CHARFORMAT cf = { sizeof(cf) };
	cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_BOLD;
	cf.crTextColor = RGB(255, 0, 255);
	cf.yHeight = 280;
	_tcscpy_s(cf.szFaceName, "隶书");
	int nLen = m_hist.GetTextLength();
	m_hist.SetSel(-1, -1);
	m_hist.ReplaceSel(_T("\r\n你对XXX说:"));
	m_hist.SetSel(nLen, -1);
	m_hist.SetSelectionCharFormat(cf);
	//追加聊托内容并设置格式
	nLen = m_hist.GetTextLength();
	CString szText;
	GetDlgItemText(IDC_INPUT, szText);
	m_hist.SetSel(-1, -1);
	m_hist.ReplaceSel("\r\n" + szText);
	cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_UNDERLINE;
	cf.crTextColor = RGB(0, 0, 255);
	cf.yHeight = 180;
	_tcscpy_s(cf.szFaceName, "宋体");
	m_hist.SetSel(nLen, -1);
	m_hist.SetSelectionCharFormat(cf);
	m_hist.SetSel(-1, -1);
	SetDlgItemText(IDC_INPUT, NULL);
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC RichEdit控件是一个Microsoft Visual C++中提供的文本编辑控件,可以应用于Windows图形用户界面应用程序中。下面是对于您的问题的解答: 1. 文字加粗:使用EM_SETCHARFORMAT消息设置CHARFORMAT2结构体的dwEffects成员的CFE_BOLD标志。 例如: CHARFORMAT2 cf; cf.cbSize = sizeof(CHARFORMAT2); cf.dwMask = CFM_BOLD; cf.dwEffects = CFM_BOLD; m_richEdit.SetSelectionCharFormat(cf); 2. 颜色、字体、大小、下划线、斜体:使用CHARFORMAT2结构体设置,设置结构体的成员变量即可。 例如: CHARFORMAT2 cf; cf.cbSize = sizeof(CHARFORMAT2); cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_UNDERLINE | CFM_ITALIC; cf.dwEffects = 0; cf.crTextColor = RGB(255, 0, 0); cf.yHeight = 200; wcsncpy_s(cf.szFaceName, LF_FACESIZE, L"微软雅黑", LF_FACESIZE); cf.bUnderlineType = CFU_UNDERLINE; cf.dwMask |= CFM_UNDERLINETYPE; cf.bCharSet = DEFAULT_CHARSET; cf.bPitchAndFamily = DEFAULT_PITCH; m_richEdit.SetSelectionCharFormat(cf); 3. 颜色和字体框选项:使用SetSelectionCharFormat方法将绘制范围设置为所选文本的范围,然后设置CHARFORMAT2结构体。 例如: CHARFORMAT2 cf; cf.cbSize = sizeof(CHARFORMAT2); cf.dwMask = CFM_COLOR | CFM_FACE; cf.dwEffects = 0; cf.crTextColor = RGB(255, 0, 0); wcsncpy_s(cf.szFaceName, LF_FACESIZE, L"微软雅黑", LF_FACESIZE); m_richEdit.SetSel(0, -1); // 选择整个文本 m_richEdit.SetSelectionCharFormat(cf); 这样,选择的文本将呈现为红色、微软雅黑字体。 希望这些代码能够帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值