MSN / QQ 中的CRichEditCtrl (一) —— 背景

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

首先对标题说明一下,在MSN中,聊天的窗口可能是一个自定义的类。大家用Spy ++可以看看。

对与自定义窗口,可以使用CreateWindow, SetWindowLong或者是SubclassWindow实现,不过这不

是我现在讨论的话题。

好, 先看看效果再说:

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

关于背景的实现,我看了blog上的一篇文章,知道了不能直接处理WM_ERASEBKGND。我就没有这样做了。(没有测试就轻易的相信了别人,呵呵,:))

还有据说需要Hook才行,或者是重写WM_PAINT处理函数。

是不是很恐怖?事实上没有那么恐怖。

其实很简单的,关键的一点就是RICHEDIT20A的WS_EX_TRANSPARENT这个Style!

有了它,我们就可以Create一个透明的CRichEditCtrl了,然后就直接在Dialog上绘图片!这样看起来就是

RichEdit的背景了,是不是?

首先:

1m_Chat.CreateEx(WS_EX_TRANSPARENT, "RICHEDIT20A", "", WS_VISIBLE | WS_CHILD |

2 WS_CLIPCHILDREN | WS_VSCROLL | ES_MULTILINE | ES_READONLY |

3 ES_AUTOVSCROLL |ES_LEFT | ES_WANTRETURN, rt, this, IDC_CHAT, NULL);

我们就得到了一个透明的RichEdit了,是不是很帅?

然后就可以使用两种方法绘制窗体背景。

(1)响应WM_ERASEBKGND

(2)OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

节约时间,就不多说了啊。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航