CRichEditCtrlEx支持静态表情聊天类的使用

本文作者:无幻
博客地址:http://blog.csdn.net/akof1314

 

平时我们在做IM聊天之类的软件的时候,一般都会使用Rich Edit控件来作为聊天编辑框和聊天记录框的控件,在之前的VC知识库看过《类似 MSN 信息发送框的制作(上)》、《类似 MSN 带转义字符的信息发送框的制作(下)》、《一个在RichEdit中添加表情图象的类》学到不少东西,在Visual Studio 2008 SP1下扩展了些功能,比如解码转义字符、编码转义字符、自动检测超链接、聊天记录框的用户内容和信息内容颜色和缩进分开显示等等,加上原来的插入位图表情、右键菜单、表情拾取器、RTF输入输出等等,可以符合基本的聊天控件要求了。见下图效果所示:

这是Unicode版本,如有需要的请自行修改其他版本。下面以Visual Studio 2008 SP1环境介绍使用方法:
1.新建一个基于对话框工程,名称为TestCoolChat,为Unicode字符集;
2.将素材img文件夹放在工程下面,导入InnerButton.h、InnerButton.cpp、BmpPicker.h、BmpPicker.cpp、BmpContainer.h、BmpContainer.cpp、RichEditCtrlEx.h、RichEditCtrlEx.cpp、oleimpl2.h到工程方案;
3.在窗体上放一个“表情选择”按钮、“发送”按钮和两个RichEidt控件,分别作为聊天编辑框和聊天记录框,设置它们的属性其MultilineTruewant returnTrueVertical ScrollTrue,把聊天编辑框做为聊天记录框的下一个TAB键顺序控件,在应用程序实现文件里面添加AfxInitRichEdit2(),分别为两个RichEdit控件添加变量:

CRichEditCtrlEx m_RichEdit; 
CRichEditCtrlEx m_RichLog; 

为“选择表情”按钮添加变量:

CBmpPicker m_BmpPicker; 

在对话框初始化函数OnInitDialog()里面添加如下代码:

CString strFileName;  
for(int i=1;i<21;i++)    //加载表情图片  
{  
    strFileName.Format(_T("img//%d.bmp"),i);  
    m_BmpPicker.AddBitmap(strFileName);          
}  
m_RichLog.SetType(CHATLOG);//设置聊天记录框类型  

4.添加“选择表情”按钮单击事件:

void CTestCoolChatDlg::OnBnClickedButton1()  
{      
    int index=m_BmpPicker.GetCurrentBitmapIndex();  
    m_RichEdit.InsertBitmap(HBITMAP(*m_BmpPicker.GetBitmapAt(index)),index);      
}  

5.添加“发送”按钮单击事件:

void CTestCoolChatDlg::OnBnClickedButton5() 

    CHARFORMAT cf; 
    m_RichLog.AddMessageUser(_T("天使之泪"),RGB(0,128,64)); 
    m_RichEdit.GetDefaultCharFormat(cf); 
    m_RichLog.AddMessgaeText(m_RichEdit.EncodeRichMessage(),cf.szFaceName,cf.yHeight/20,(cf.dwEffects & CFE_BOLD),(cf.dwEffects & CFE_ITALIC),(cf.dwEffects & CFE_UNDERLINE),cf.crTextColor,&m_BmpPicker); 
    m_RichEdit.SetWindowText(_T("")); 
    m_RichEdit.SetFocus(); 

 

示例源代码:https://download.csdn.net/download/akof1314/3278764(1.2版本)

 

 

更新日志:

2011年5月14日:发布1.2版本,修改内存泄露问题
2010年11月9日:修改复制粘贴出现的问题

 

 


 

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值