文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++CRichEditCtrl实现MSN背景,字体,超链接
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
热点TOP10
·进程和线程编程
·C语言编程易犯毛病集合
·打字游戏
·Awk 基础入门:Awk 实例编程
·asp.net中调用javascript函数实现多功能日期控件示例
·C语言编程常见问题解答之常用函数的包含文件(1)
·C# GridView 排序及分页
·C #中的几个线程同步对象方法
·无废话C#设计模式之三:Abstract Factory
·C# DataGridView隔行显示不同的颜色

CRichEditCtrl实现MSN背景,字体,超链接

日期:2008年6月8日 作者: 查看:[大字体 中字体 小字体]


  相关链接:CRichEditCtrl实现MSN/QQ动画表情


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

  对与自定义窗口,可以使用CreateWindow, SetWindowLong或者是SubclassWindow实现,不过这不是我现在讨论的话题。

  好, 先看看效果再说(如图1):

CRichEditCtrl实现MSN背景,字体,超链接


图1:实现效果图

一、MSN超链接的实现
  关于HyperLink的是实现,我找到了一种自绘的实现方式,自己维护,效果也很不错(如图2)。

CRichEditCtrl实现MSN背景,字体,超链接
图2:超链接

  就在我觉得实现OLE的插入有难度时,就想过了直接自己绘制,自己维护,但是觉得做法不是很正统,对不起Microsoft给我留的IRichEditOle接口,就没有使用这种解决方法。我们大致讲一下实现方式:

  定义一个struct描述每个hyperlink对象:

1typedef struct _HYPERLINKINFO
2{
3 CRect rectDimension;
4 CString csLinkText;
5 UINT unLinkDlgID;
6 inline operator = (struct _HYPERLINKINFO linkInfo){ rectDimension = linkInfo.rectDimension;csLinkText = linkInfo.csLinkText;unLinkDlgID = linkInfo.unLinkDlgID;}
7}HYPERLINKINFO,*LPHYPERLINKINFO;


  这里有一个UINT unLinkDlgID,是来描述点击这个link后弹出的dialog的。

  CRect rectDimension;用来保存这个link的rect,以检查鼠标是否在其中,以显示鼠标光标;对于多links,他使用了一个CList来维护(或者可以选择使用std::list):

1CList m_lsLinks;


  其中很关键的就是判断鼠标是不是在一个link的rect内。这种实现的确很不错,但是我要说的是另一个更现代的实现方式,实现起来也简单得多,关键的就是有个Style =>。ENM_LINK 这个style在RichEdit20中才有,所以我们应该使用RichEdit20A!我们维护这样一个类:

1class _AFX_RICHEDITEX_STATE
2{
3public:
4 _AFX_RICHEDITEX_STATE();
5 virtual ~_AFX_RICHEDITEX_STATE();
6 HINSTANCE m_hInstRichEdit20 ;
7};


更多文章 更多内容请看MSN专题专题,或
  实现代码就一点,就是用这个类来Load Richedit20

1_AFX_RICHEDITEX_STATE::_AFX_RICHEDITEX_STATE()
2{
3 m_hInstRichEdit20 = NULL ;
4}
5
6
7
8_AFX_RICHEDITEX_STATE::~_AFX_RICHEDITEX_STATE()
9{

10 if( m_hInstRichEdit20 != NULL )
11 {
12 ::FreeLibrary( m_hInstRichEdit20 ) ;
13 }
14}
15
16
17
18_AFX_RICHEDITEX_STATE _afxRichEditStateEx ;
19
20
21
22BOOL PASCAL AfxInitRichEditEx()
23{

[1] [2] [3] 下一页 




上一篇:C/C++头文件一览

下一篇:CRichEditCtrl实现MSN/QQ动画表情

相关文章:
·qq空间皮肤背景代码:QQ空间不用Q币更换主页皮肤方法
·如何实现局域网打印机共享
·QQ空间黑色背景的素材图片
·〓QQ空间背景皮肤〓火影代码
·水晶报表的jsp实现
·CorelDRAW复合字体的解决办法
·浪漫QQ空间导航+动画背景-爱的魅力蓝色版
·QQ空间黑色背景的素材图片(2)
·如何去掉超链接的下划线
·用Excel实现定时提醒
相关软件:
·300多种中文字体
·素材字体-中国龙字库
·微软雅黑字体
·很多人要的毛笔书法字体(启功体 简体+繁体)
·TCP-IP详解卷2:实现
·搜狗拼音输入法(可自定义字体、大小、颜色等)V3.0Beta2
·推荐-改变网页背景图片
·855款Corel Draw专用字体
·TCP-IP详解卷二:实现
·Cisco 3640实现VOIP配置

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot