当前位置:C++技术网 > 资讯 > 完美记事项目:9 CRichEditCtrl的CHARFORMAT参数说明

完美记事项目:9 CRichEditCtrl的CHARFORMAT参数说明

更新时间:2015-06-26 19:03:24浏览次数:1+次

    应用程序可以通过给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:字体名称。