各位高手:setsel这个函数是不是不认/r/n回车换行符,当我将一段message中的表情转义符替换成表情操作时,如果碰到回车换行符,所有的表情位置都错位了,好像也没什么规律. 

解决方案 »

  1.   

    工程为.net 2003 RichEdit2.0
    工程已设为Unicode
      

  2.   

    现在出现什么问题?你说的将一段message中的表情转义符替换成表情操作没有搞懂。
      

  3.   

    好像可以的哦你是先怎样将message写进richedit的?先全部写了在将转义符更换还是一个个字符的读?我试过在cstring中找到转义符的位置,记录,将转义符去掉,然后
    SetSel(-1, -1);
    ReplaceSel(strMsg + "\r\n");之后再插图片,没有问题哦
      

  4.   

    感谢二位的回复
    问题是这样的:工程没有定义Unicode,首先我从输入消息的Richedit控件中得到表情的位置(ole->GetObject(i, &reo, REO_GETOBJ_NO_INTERFACES);)但是如果碰到像1234表情1234回车换行符
    1234表情1234在得到第二行的表情的位置刚好是比实际的要少一位,调试发现GetObject这个函数不管你是否定义Unicode当碰到回车换行符时都认为是一个字符,所以比实际的长度要少一位。然后到了显示的时候,在SetSel转义符的时候,位置就错乱了如果工程中定义成Unicode的话,之前的问题似乎可以解决,然而新问题又来了,在使用CString的mid函数来取转义符时,Mid函数将"\r\n"识别成了两个字符。
    然而到了使用Richedit 的Setsel的时候"\r\n"认为是一个字符。请各位高手支支招。谢谢~~
      

  5.   

    codeproject上面有一个例子,是RichEdit里面插入图像的,你可以找找看,我以前下载看过,不过电脑太乱不知道放哪里了。
      

  6.   

    http://www.codeproject.com/KB/edit/AnimatedEmoticon.aspxhttp://www.codeproject.com/info/search.aspx?artkw=richedit&sa_ao=False&sa_ig=False&sa_so=17&pgnumpager=3
    搜一下看看
      

  7.   

    http://www.codeproject.com/KB/edit/AnimatedEmoticon.aspx 
    这个例子看过了,也只是些缩简版本,没有提到如何将传过来的东东整到显示框里头去。
      

  8.   

    还有一个例子是在richedit里面显示gif图像,还支持一个打开powerpoint的,我忘了地址了。
      

  9.   

    这样的话或者换一种方式咯一个字符一个字符的读和写,读到转义符的时候用
    int nCharCount = pRichEditCtrl->GetTextLength();
    来读取插入的位置或者将转义符前面的先写,插入图片,再写后面的,一段一段来
    反正都要解析转义符的
      

  10.   

    你好,问题和你的一样,求解答![email protected]