做的东西需要对关键字上颜色,在重载的OnEnChange()函数里设置,比如,当前关键字是"select",代码如下: CHARFORMAT cf;
cf.cbSize = sizeof(cf);
GetDefaultCharFormat(cf);
DWORD dwEffects = 0;
cf.dwEffects = dwEffects;
cf.crTextColor = RGB(255,0,255);
cf.dwMask = CFM_BOLD | CFM_COLOR;
SetSel(m_SelEnd-6,m_SelEnd);
SetWordCharFormat(cf);
ReplaceSel(_T("select")); 在英文输入法时输入select后马上就变成红色,测试通过;但现在的问题是,在中文输入法时输入select后,SetWordCharFormat函数好像不起作用,返回值为0。字符串select也没有变色,不知道是为什么?
cf.cbSize = sizeof(cf);
GetDefaultCharFormat(cf);
DWORD dwEffects = 0;
cf.dwEffects = dwEffects;
cf.crTextColor = RGB(255,0,255);
cf.dwMask = CFM_BOLD | CFM_COLOR;
SetSel(m_SelEnd-6,m_SelEnd);
SetWordCharFormat(cf);
ReplaceSel(_T("select")); 在英文输入法时输入select后马上就变成红色,测试通过;但现在的问题是,在中文输入法时输入select后,SetWordCharFormat函数好像不起作用,返回值为0。字符串select也没有变色,不知道是为什么?
解决方案 »
- 关于实习,很矛盾,求指点迷津
- 如何将RGB565的200*200的图像插值为300*300
- 为什么我在CDelRecMain类中不能得到CDelRecordDlg类中的public成员变量的值
- 向上得到窗口类和文档类指针问题CMyDoc
- C/S异步多线程怎么做?
- 鼠标点击矩形更换窗口背景图片怎么写?
- ATL写的组件,放在网页中,它怎么得到ie关闭的事件,怎么阻止它关闭???100分奉送
- 如何在CMyApp,CMainFrame,CMyDoc,CMyView之外的类中实现菜单响应函数?
- 程序运行时正常,但退出时出现异常:xxxxxx指令引用的xxxxxx内存,该内存不能为read.请问如何改正!
- 求 键盘钩子
- sendOptionsCmd( )返回值始终未空,收不到包....
- 谁做过WebSphere MQ的,问个弱弱的问题
SetSel好象会选中半边 导致SetWordCharFormat没效果
也碰到过 不过没细究 用UNICODE试试看
中英文时混合时字符数最好自己去算
你说的UNICODE怎么计算呢?
int nChars = 0; // 字符数
int nTextLength = 0; // 串长度 nTextLength = _tcslen(szText); // ----这里是14
if (0 == nTextLength)
{
return;
}
for ( int i = 0; i <nTextLength; ++i)
{
if (_ismbblead((unsigned int)*(szText + i)) || 0 > (int)*(szText + i))
{
// 双字节字符
++i;
}
++nChars; // ---加到最后是11,这个才是字符数,14是把中文当成两个了
}
不知道你的问题是不是这个引起的
能说具体点么?是说计算的时候使用Unicode字符来计算?怎样转换?
由于你用的crichedit控件,建议你采用的格式结构体应该是:CHARFORMAT2.其原型为:
typedef struct _charformat2 {
UINT cbSize;
DWORD dwMask;
DWORD dwEffects;
LONG yHeight;
LONG yOffset;
COLORREF crTextColor;
BYTE bCharSet;
BYTE bPitchAndFamily;
TCHAR szFaceName[LF_FACESIZE];
WORD wWeight;
SHORT sSpacing;
COLORREF crBackColor;
LCID lcid;
DWORD dwReserved;
SHORT sStyle;
WORD wKerning;
BYTE bUnderlineType;
BYTE bAnimation;
BYTE bRevAuthor;
BYTE bReserved1;
} CHARFORMAT2;
是说将文字内部转码么?但是转码以后SetWordCharFormat就能成功了么
RichEdit2控件有两种:一种是RichEdit2A,你注意到了这个A么,还有一种是RichEdit2W,注意到了这个W么。
使用哪种控件就看你用什么编码了。
GoodLuck。