GetDlgItemText()函数取RichEdit中的表情是什么字符?????

tanker1024 2009-03-11 10:19:36
首先将我的问题阐述一下: 我向编辑框里面输入一个表情图像,在输入的同时我会将表情图像转换成一个特殊点的字符(比如说 :wx),然后将这个字符和RichEdit里面的字符连接在一起, 但是我如果第二次输入一个表情的时候 ,我现在就必须要得到 在输入这个表情之前已经存在于RichEdit里面的字符串?我用的GetDlgItemText(),但是他得到的字符串中表情就是空格 ,这显然不符合我的要求,我希望能得到我之前将表情转换为我自定义的特殊字符的字符串,同时在用户del内容的时候也能同时 del。请大家帮帮忙出出主意!谢谢
主要代码如下:

//头文件中定义
CString m_strSendMessage;
//输入表情时在定义好的链表中找到响应字符串
for (it =m_FaceList.begin();it != m_FaceList.end();it++)
{
if ((*it).nIndex == nImageNum)
{
m_strSendMessage = m_strSendMessage + (* it).wSymbol;
}
}

OnChangeRichedit()函数里面
{
GetDlgItemText(IDC_RICHEDIT_SENDMESSAGE,m_strSendMessage);
}
...全文
164 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanker1024 2009-03-12
  • 打赏
  • 举报
回复
好复杂啊..有没有人能给提供点精简的方法啊...
tanker1024 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yuliangpei 的回复:]
不用表情转换,直接输入看能否取出来!
[/Quote]

好像有点眉目了,,谢谢提醒
tanker1024 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yuliangpei 的回复:]
不用表情转换,直接输入看能否取出来!
[/Quote]

直接输入?怎么直接输入啊? 在编辑框里面不显示表情 直接显示我的 特殊字符?
yuliangpei 2009-03-11
  • 打赏
  • 举报
回复
不用表情转换,直接输入看能否取出来!
tanker1024 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Ainiybzz 的回复:]
P M51.COM(去掉空格)是非法词?很牛
[/Quote]

????、啥意思?
tanker1024 2009-03-11
  • 打赏
  • 举报
回复
数据只是临时的 就是聊天窗口的输入框!我显示在发送界面上一点问题都没有的,不管是输入表情还是文字,都是按照正常顺序显示出来的..

我现在的问题是 我要将这个表情发送出去,对方需要正确接收并显示,就必须将表情替换成我定义的特殊字符。每次都要重新处理是因为 用户在这个中间可能随时删除以前已经输入的字符串或者表情, 所以我必须要得到输入这个表情之前已经存在于RichEdit里面的字符串,得到字符串也只能在CRichEdit里面的OnChange事件里面处理。
FireBirdCN 2009-03-11
  • 打赏
  • 举报
回复
这样就需要看你的RichEdit是干什么用的了
如果其中的数据只是临时的 比如聊天窗口的输入框
那么可以在每次输入表情时把 所有内容 保存到一个 TempStr中


另问: 你所说的 “但是我如果第二次输入一个表情的时候 ,我现在就必须要得到 在输入这个表情之前已经存在于RichEdit里面的字符串?”
为什么每次都要重新处理所有的字符呢?
不能如我1楼说的那样直接追加?
tanker1024 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 FireBirdCN 的回复:]
记住: 当你需要向CRichEdit追加内容时,不能用
m_strRichEdit += "5678\r\n";
UpdateData(TRUE);

这样的代码来实现.这种方法有问题. 你应该用下面的ReplaceSel方法来实现内容的显示内容的追加

CString m_strRichEdit2 = "1234\r\n";
m_richEdit.SetSel(-1,-1);
m_richEdit.ReplaceSel((LPCTSTR)m_strRichEdit2);
[/Quote]

貌似我的问题不是出在那个上面啊 我现在是取字符出了问题...
FireBirdCN 2009-03-11
  • 打赏
  • 举报
回复
记住: 当你需要向CRichEdit追加内容时,不能用
m_strRichEdit += "5678\r\n";
UpdateData(TRUE);

这样的代码来实现.这种方法有问题. 你应该用下面的ReplaceSel方法来实现内容的显示内容的追加

CString m_strRichEdit2 = "1234\r\n";
m_richEdit.SetSel(-1,-1);
m_richEdit.ReplaceSel((LPCTSTR)m_strRichEdit2);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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