MSN / QQ 中的CRichEditCtrl (一) —— 字体改变

首先对标题说明一下,在MSN中,聊天的窗口可能是一个自定义的类。大家用Spy ++可以看看。
对与自定义窗口,可以使用CreateWindow, SetWindowLong或者是SubclassWindow实现,不过这不
是我现在讨论的话题。

好, 先看看效果再说:

我实现的主要就是:(一)字体格式; (二)超链接;(三)背景图片;(四)动画表情



好,开始咯。
字体的实现是很简单的,我没有使用rtf,觉得太烦琐了,我也不需要那么复杂的控制。
仅仅是一个结构CHARFORMAT:

<script type=text/javascript> function ToggleSourceCodeRegion(regionNumber) { var divRegion = document.getElementById('region' + regionNumber); var divRegionBlock = document.getElementById('regionBlock' + regionNumber); if (divRegion.style.display == 'inline') { divRegion.style.display = 'none'; divRegionBlock.style.display = 'inline'; } else { divRegion.style.display = 'inline'; divRegionBlock.style.display = 'none'; } } </script>
1typedef struct _charformat
2{
3 UINT  cbSize;
4 _WPAD  _wPad1;
5 DWORD  dwMask;
6 DWORD  dwEffects;
7 LONG  yHeight;
8 LONG  yOffset;
9 COLORREF crTextColor;
10 BYTE  bCharSet;
11 BYTE  bPitchAndFamily;
12 char  szFaceName[LF_FACESIZE];
13 _WPAD  _wPad2;
14} CHARFORMATA;
 

相当的明白了,我就不用多说了;对于CRichEditCtrl,它提供的关于格式的接口有:
SetDefaultCharFormat(CHARFORMAT &cf);
SetSel(CHARFORMAT &cf);
大家都是明白人,一看便知,也不多说了,那么如何使用CFontDialog选择字体呢?
呵呵,其实很简单咯,因为有这个东西 => CFontDialog::GetCharFormat(CHARFORMAT &cf);
所以,总的实现可能就是这么简单的几句代码:

<script type=text/javascript> function ToggleSourceCodeRegion(regionNumber) { var divRegion = document.getElementById('region' + regionNumber); var divRegionBlock = document.getElementById('regionBlock' + regionNumber); if (divRegion.style.display == 'inline') { divRegion.style.display = 'none'; divRegionBlock.style.display = 'inline'; } else { divRegion.style.display = 'inline'; divRegionBlock.style.display = 'none'; } } </script>

1CFontDialog fontdlg;
2 
3  int ret = fontdlg.DoModal();
4  if(IDOK == ret)
5  {
6   CHARFORMAT cf;
7   fontdlg.GetCharFormat(cf);
8   m_SendMsg.SetDefaultCharFormat(cf); 
9 }

这个本身很简单,那就只写这么多了,一会儿写下一篇。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
CRichEditCtrl是一个强大的编辑控件,类似于QQ的文本输入框。它提供了许多丰富的功能和属性,使用户可以在文本框进行各种编辑操作。 首先,CRichEditCtrl支持格式化文本的输入和显示。用户可以在文本框输入普通文本、图像、表格等多种内容,并且可以对这些内容进行格式化,如设置字体、字号、颜色、对齐方式等,使文本呈现出更加丰富多样的样式。 其次,CRichEditCtrl还支持富文本编辑。用户可以在文本框进行插入和删除操作,如插入链接、插入图片、插入超链接等。同时,用户还可以对文本进行复制、粘贴和剪切等操作,实现对文本内容的高效编辑和管理。 此外,CRichEditCtrl还提供了撤销和重做功能,使用户可以方便地撤销之前的编辑操作,并重新执行已经撤销的操作。这样,用户就可以随时回退到之前的状态,确保编辑操作的准确性和完整性。 最后,CRichEditCtrl还支持自动完成和输入提示功能。用户在输入文本时,CRichEditCtrl可以自动提供半透明的输入提示窗口,显示可能的补充内容,如常用词汇、表情符号等,帮助用户快速输入并提高输入效率。 综上所述,CRichEditCtrl类似于QQ的编辑控件,它具有强大的编辑功能、支持富文本编辑和格式化显示、提供撤销和重做功能,同时还支持自动完成和输入提示。这使得用户可以在文本输入时体验到更多的便捷和灵活性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值