关于RichEditCtrl在Win2000下的变异!!!(SOS,高难度)

BugGo 2000-05-31 12:51:00
//m_richEdit为CRichEditCtrl
m_richEdit.Create(WS_CHILD and WS_VISIBLE and ES_WANTRETURN and ES_MULTILINE , CRect( 10,10,350,250), this, 112);
char *pSrt = "γδε";
m_richEdit.SetWindowText(pSrt);
m_richEdit.SetSel(0, 2);
//注:此时选中了"γδ"两个字符,而"γδ"应为双字节,
//在Win98下只会选中“γ”一个字符。
//Why?
CString csTitle;
csTitle = m_richEdit.GetSelText();
//注:此时返回"γδ"两个字符;而在下一语句中得到的长
//度却为4
//Why?
l = csTitle.GetLength();


请问如何能让RichEdiCtrl在Win2000下保持Win98下的特性?
...全文
297 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BugGo 2000-08-11
  • 打赏
  • 举报
回复
若其中有汉字该如何计算?
westaf 2000-07-30
  • 打赏
  • 举报
回复
既然win2000用的都是UNICODE了,我么的程序也应该用UNICODE才是。

把所有的char换成TCHAR,再在所有的字符串常量前面加一个_T。

另外对于CString.GetLength,MSDN上说得很清楚了,它返回的是字符串的字节数,而不是字符数,所以在UNICODE的情况下,返回值应除以2才能得出字符数。
Alkaid 2000-07-28
  • 打赏
  • 举报
回复
难道"γδ"的长度不为4吗?它可是“A6 C3 A6 C4”啊!
所以"γδ"是4个字节,不是双字节!
FBStudio 2000-07-27
  • 打赏
  • 举报
回复
在程序中加上下面的代码,重新编译试一试
#ifdef _UNICODE
#undef _UNICODE
#endif
BugGo 2000-07-27
  • 打赏
  • 举报
回复
我试过,不行!!

Davis_Dai 2000-07-05
  • 打赏
  • 举报
回复
win2000使用的是unicode.
jim3000 2000-07-05
  • 打赏
  • 举报
回复
原因:richEditCtrl控件在Win2000下的版本支持双字节,而在98及以前的版本只支持单字节。可能两个版本的函数有变化。
解决:用Win98的system目录下的riched20.dll替换Win2000下的同名文件。
BugGo 2000-07-05
  • 打赏
  • 举报
回复
我试过,不行!!
BugGo 2000-06-02
  • 打赏
  • 举报
回复
我试过,不行!!
Un1 2000-05-31
  • 打赏
  • 举报
回复
我也有这个问题,暂时是用足够长的缓冲去读然后TrimNull搞定的。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧