首先对标题说明一下,在MSN中,聊天的窗口可能是一个自定义的类。大家用Spy ++可以看看。 对与自定义窗口,可以使用CreateWindow, SetWindowLong或者是SubclassWindow实现,不过这不 是我现在讨论的话题。
好, 先看看效果再说:
 我实现的主要就是:(一)字体格式; (二)超链接;(三)背景图片;(四)动画表情
好,开始咯。 字体的实现是很简单的,我没有使用rtf,觉得太烦琐了,我也不需要那么复杂的控制。 仅仅是一个结构CHARFORMAT:
typedef struct _charformat { UINT cbSize; _WPAD _wPad1; DWORD dwMask; DWORD dwEffects; LONG yHeight; LONG yOffset; COLORREF crTextColor; BYTE bCharSet; BYTE bPitchAndFamily; char szFaceName[LF_FACESIZE]; _WPAD _wPad2; } CHARFORMATA;
相当的明白了,我就不用多说了;对于CRichEditCtrl,它提供的关于格式的接口有: SetDefaultCharFormat(CHARFORMAT &cf); SetSel(CHARFORMAT &cf); 大家都是明白人,一看便知,也不多说了,那么如何使用CFontDialog选择字体呢? 呵呵,其实很简单咯,因为有这个东西 => CFontDialog::GetCharFormat(CHARFORMAT &cf); 所以,总的实现可能就是这么简单的几句代码:
CFontDialog fontdlg; int ret = fontdlg.DoModal(); if(IDOK == ret) { CHARFORMAT cf; fontdlg.GetCharFormat(cf); m_SendMsg.SetDefaultCharFormat(cf); }
这个本身很简单,那就只写这么多了,一会儿写下一篇。 
|