编程语言

img dTianx

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

发表于2004/10/22 13:21:00  3683人阅读

分类: C++ / Visual C++ / Visual C++.NET

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

好, 先看看效果再说:

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



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

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);
所以,总的实现可能就是这么简单的几句代码:

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 0

相关文章推荐

img
取 消
img