Crichedit改变字体的问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 05:36:21
CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |
CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;
cf.dwEffects = 0;
cf.yHeight = 12*12;//文字高度
cf.crTextColor = RGB(200, 100, 255); //文字颜色
strcpy(cf.szFaceName ,_T("隶书"));//设置字体

m_richedit.SetSel(1, 5); //设置处理区域
m_richedit.SetSelectionCharFormat(cf);

这在Unicode下出错
error C2664: 'strcpy' : cannot convert parameter 2 from 'unsigned short [3]' to 'const char *'
请问要如何解决,谢谢

strcpy(cf.szFaceName ,_T("隶书"));//设置字体 //错了
用lstrcpy(cf.szFaceName ,_T("隶书"));

但CHARFORMAT是不支持Unicode的,因此要用CHARFORMAT2这个版本。
不知道你是不是新学了一个结构会去注意下它结构中各种数据的排列顺序?
一般象cbSize都是放在第一个的,这个是有窍门的。如:
CHARFORMAT cf = { sizeof(CHARFORMAT); }
这个就是初始化了。

同你写的比较一下:
CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);

是不是有不同的体会呢?