应用程序可以通过给Rich Edit控件发送消息来格式化字符和段落以及获取这些格式化信息。对字符而言,可以指定字体、大小、颜色以及加粗、斜体和等效果。可以采用EM_SETCHARFORMAT消息和EM_GETCHARFORMAT消息来设置和获取字符格式属性,也可以来设置和获取默认字体格式,它将应用于所有随后插入的字符。但是,只有在当前选择内容为空的时候默认字符格式才会被应用到新插入的文本上。
前景色是一个字符属性,但背景色是一个Rich Text的属性,要设置背景色,需要采用EM_SETBKGNDCOLOR消息。
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;
和PARAFORMAT结构体类似,每个参数详解如下: cbSize:结构体的尺寸。在使用结构体之前必须对此成员进行设置。
dwMask:结构体成员属性掩码。可以设置的掩码如下:
CFM_BOLD 字符效果成员dwEffects有效。
CFM_CHARSET 设置字符集成员bCharSet有效。
CFM_COLOR 文本颜色成员、dwEffects成员的CFE_AUTOCOLOR值有效。
CFM_FACE 字体名称成员szFaceName有效。
CFM_ITALIC dwEffects成员的CFE_ITALIC值有效。
CFM_OFFSET 字符偏移量成员yOffset有效。
CFM_PROTECTED dwEffects成员的CFE_PROTECTED值有效。
CFM_SIZE 字符高度成员yHeight有效。
CFM_STRIKEOUT dwEffects成员的CFE_STRIKEOUT值有效。
CFM_UNDERLINE dwEffects成员的CFE_UNDERLINE值有效。
dwEffects:字符效果设置,该成员可以是下列值得组合:
CFE_AUTOCOLOR 文本颜色是GetSysColor (COLOR_WINDOWTEXT) ,即为系统文本颜色。
CFE_BOLD 字符为粗体。
CFE_DISABLED 禁用字体效果
CFE_ITALIC 字符为斜体。
CFE_STRIKEOUT 字符上有删除线。
CFE_UNDERLINE 字符有下划线。
CFE_PROTECTED 字符具有保护效果,如果用户试图修改保护文本,Rich Edit控件将发送EN_PROTECTED通知到其父窗口,让其父窗体决定是否允许或者拒绝修改。为了接收该通知,必须使用EM_SETEVENTMASK消息。
yHeight:字符高度,以缇为单位。
yOffset:字符相对于基线的偏移,以缇为单位。若为正数,则该字符为上标;若为负数,则为下标。
crTextColor:文本颜色。若设定了CFE_AUTOCOLOR字符效果后该成员则为无效。
bCharSet:字符集设置,该成员可以是为LOGFONT结构体中lfCharSet成员指定的值的其中之一。
ANSI_CHARSET
BALTIC_CHARSET
CHINESEBIG5_CHARSET
DEFAULT_CHARSE
EASTEUROPE_CHARSET
GB2312_CHARSET
GREEK_CHARSET
HANGUL_CHARSET
MAC_CHARSET
OEM_CHARSET
RUSSIAN_CHARSET
SHIFTJIS_CHARSET
SYMBOL_CHARSET
TURKISH_CHARSET
其中,OEM_CHARSET表示字符集依赖本地操作系统。DEFAULT_CHARSET表示使用当前计算机的默认字符集。
bPitchAndFamily:字体的间距和族。该成员与LOGFONT结构体中lfPitchAndFamily成员一致。该字段是一个字节,由两部分组成。这两部分可通过C语言的OR操作符(位或运算)来产生最终字节。
最低两个比特位表示该字体是否为一个等宽字体(所有字符的宽度均相同)或是一个变宽字体。
00 DEFAULT_PITCH
01 FIXED_PITCH
10 VARIABLE_PITCH
字节的高六位表示字体的系列如下:
0x00 FW_DONTCARE
0x10 FF_ROMAN(变宽,衬线形字体)
0x20 FF_SWISS(变宽,非衬线形字体)
0x30 FF_MODERN(等宽)
0x40 FF_SCRIPT(模拟手写体)
0x50 FF_DECORATIVE
szFaceName:字体名称。