📄 在任意的开发语言的richedit控件中,插入gif动画 - 知秋一叶~专栏 - csdnblog.htm
字号:
<P></P>
<P></P>
<P></P>
<P>
在VB中使用的有两种方式:<BR> 1、采用ActiveX控件方式,在Form中显示GIF<BR>
2、采用API方式插入到VB中插入RichEdit控件中:<BR>
首先声明该函数,Private Declare Function InsertGifToRichedit Lib "DynamicGif.dll" Alias
"InsertGifToRicheditA" (ByVal hwnd As Long, ByVal gifFile As String) As
Long<BR> 然后在适当的函数中调用该函数,插入gif动画即可,比如:<BR>
ret = InsertGifToRichedit(RichTextBox1.hwnd,
filename)<BR>
这样,使用VB6也可以开发出有动态表情的聊天工具了。<BR>VC中实现动态表情比较简单了,等有时间,我写详细一些,讨论如何在VB中实现动态表情。<BR> <STRONG><U>如何下载控件和演示代码:<BR></U></STRONG> 在相册2005-1文章图片中,用FlashGet下载对应的gif图片,每个有对应的提示。<BR> 其中demo和dynamicgif对应的图片用UltraEdit二进制打开,将前面67个字节删除掉,把剩余的部分用zip扩展名保存,就是相应的压缩文件。<BR> 其他的gif为测试图片(为了公平,可以选用任何图片),大家有兴趣可以和qq比比,看看效果,呵呵。<BR>
运行前,首先将DynamicGif.dll拷贝到系统目录中,然后调用regsvr32
DynamicGif.dll注册到系统中,就可以使用了。<BR> <STRONG>免责声明:</STRONG><BR>
本控件中不含任何破坏性的代码,但是由于作者水平有限,对应控件可能造成的损失,不承担任何责任。<BR> <FONT
color=#0000ff> <STRONG>
免费使用声明:(建议大家使用这种方式)</STRONG></FONT><BR>
1、可以免费使用DynamicGif控件,用在公益事业中可以提供部分技术支持。<BR>
2、如果在About对话框或者帮助文件中声明DynamicGif控件是kql的作品,那就多谢了。<BR><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><B></B></SPAN></P>
<P><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><B>
</B></SPAN><B><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">版本升级:<CHSDATE
isrocdate="False" islunardate="False" day="5" month="12" year="2005"
w:st="on"><SPAN lang=EN-US>2005/12/5</SPAN></CHSDATE><SPAN lang=EN-US> Version
1.1</SPAN></SPAN></B><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">
<P></P></SPAN>
<P></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </SPAN><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">控件增加了属性、方法:<SPAN
lang=EN-US>
<P></P></SPAN></SPAN>
<P></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">
Text</SPAN><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">属性:该属性可以用来存储和表情对应的关键字,在传输解析时方便些<SPAN
lang=EN-US>:)</SPAN>。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"
align=left><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"></SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
SetMaxSize</SPAN><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">方法:用来缩小显示图像,使界面更美观些。<SPAN
lang=EN-US><BR style="mso-special-character: line-break"><BR
style="mso-special-character: line-break"></SPAN></SPAN><BR> </P><BR><BR>
<P id=TBPingURL>Trackback:
http://tb.blog.csdn.net/TrackBack.aspx?PostId=260148</P><BR></DIV>
<DIV class=postFoot>
<SCRIPT src=""></SCRIPT>
[<A title=功能强大的网络收藏夹,一秒钟操作就可以轻松实现保存带来的价值、分享带来的快乐
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏到我的网摘</A>]
秋色连波发表于 2005年01月19日 22:47:00 </DIV></DIV><LINK
href="http://blog.csdn.net/kql01/Services/Pingback.aspx" rel=pingback><!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Descriptionrdf:about="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx"dc:identifier="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx"dc:title="在任意的开发语言的RichEdit控件中,插入GIF动画"trackback:ping="http://tb.blog.csdn.net/TrackBack.aspx?PostId=260148" /></rdf:RDF>-->
<SCRIPT>function hide(){showComment();}</SCRIPT>
<BR>
<DIV class=post>
<DIV class=postTitle>相关文章:</DIV>
<UL class=postText>
<LI><A href="http://blog.csdn.net/wovow/archive/2004/12/12/214009.aspx"
target=_blank>用ATL和MFC来创建ActiveX控件</A> 2004-12-12 <A
href="http://blog.csdn.net/wovow/" target=_blank>wovow</A>
<LI><A href="http://blog.csdn.net/njustcxy/archive/2003/09/02/16152.aspx"
target=_blank>对话框中对成批控件的操作</A> 2003-09-02 <A
href="http://blog.csdn.net/njustcxy/" target=_blank>njustcxy</A>
<LI><A href="http://blog.csdn.net/likaier/archive/2005/04/25/361587.aspx"
target=_blank>Visual Basic中ActiveX控件的制作(一)</A> 2005-04-25 <A
href="http://blog.csdn.net/likaier/" target=_blank>likaier</A>
<LI><A href="http://blog.csdn.net/ycl111/archive/2004/11/04/166831.aspx"
target=_blank>在ASP.NET中使用用户控件(转)</A> 2004-11-04 <A
href="http://blog.csdn.net/ycl111/" target=_blank>ycl111</A>
<LI><A href="http://blog.csdn.net/surstar/archive/2005/03/20/324620.aspx"
target=_blank>什么是ActiveX --《VC ++ Master》 </A>2005-03-20 <A
href="http://blog.csdn.net/surstar/"
target=_blank>surstar</A></LI></UL></DIV><BR><BR>
<DIV class=post id=csdn_zhaig_ad_yahoo></DIV><SPAN
id=Anthem_Comments.ascx_ltlComments__><SPAN id=Comments.ascx_ltlComments><BR>
<DIV id=comments>
<H3></H3>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#344756">#</A> <A
name=344756> </A>Light 发表于2005-01-31 14:44:00 IP:
59.36.11.*</DIV>
<DIV class=postText>我在delphi 中试了下 ,插入到 RxRichedit 中, 没有闪, Good! <BR>其实QQ 的 也闪。
但是另外有个问题: 我不能将 图片保存, 保存后load, Gif 图片丢失。 QQ 的可以保存。</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#344949">#</A> <A
name=344949> </A>Light 发表于2005-01-31 11:00:00 IP:
219.130.117.*</DIV>
<DIV class=postText>我绝对佩服你, 我用 QQ 的 imageole.dll 插入 gif, 闪的厉害, 一点都不好。
<BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#344977">#</A> <A
name=344977> </A>light 发表于2005-01-31 17:02:00 IP:
59.36.11.*</DIV>
<DIV class=postText>另外在delphi 中使用 部分 Gif 文件不能打开,出现“未指定错误”提示,用 Imageole.dll 则没有。
<BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345145">#</A> <A
name=345145> </A><A
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx" target=_blank
rel=nofollow>千江月</A> 发表于2005-01-31 12:16:00 IP:
221.219.9.*</DIV>
<DIV class=postText>呵呵,过奖了。其实在VB的Form中使用还有问题,其他的如Delphi等中也没有环境测试,我只会VC( 惭愧 :) ),
所有在VC中测的比较细,VB中简单的测了一下;可能在其他环境中的Richedit中用,应该没有问题吧。
<BR>欢迎大家在VC/VB/Delphi/PB/C#等环境中测试,有错误发到我的邮箱或qq。 <BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345176">#</A> <A
name=345176> </A><A
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx" target=_blank
rel=nofollow>千江月</A> 发表于2005-01-31 23:47:00 IP:
221.219.6.*</DIV>
<DIV class=postText>delphi打不开的文件是否大于150×150?
<BR>我觉得作为动画表情大于150×150的意义不大,并且对cpu的占用很高,因此在控件中做了限制,qq的没有这个限制。
<BR>另外,至于保存后load出错,是因为没有实现相应的接口,等有时间我加上,这到没关系。</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345257">#</A> <A
name=345257> </A>light 发表于2005-02-01 08:46:00 IP:
219.130.117.*</DIV>
<DIV class=postText>能否透露你是怎样paint Gif 的? </DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345355">#</A> <A
name=345355> </A>IBM 发表于2005-02-01 14:55:00 IP:
218.20.227.*</DIV>
<DIV class=postText>为什么在window2000下不能注册,提示"找不到指定模块"?</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345358">#</A> <A
name=345358> </A>IBM 发表于2005-02-01 14:56:00 IP:
218.20.227.*</DIV>
<DIV class=postText>为什么我在2000下注册,提示找不到指定模块,注册不了?</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345452">#</A> <A
name=345452> </A><A
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx" target=_blank
rel=nofollow>千江月</A> 发表于2005-02-02 13:29:00 IP:
221.216.159.*</DIV>
<DIV class=postText>用在什么地方,可否告知?
<BR>春节后才会把永久化存储的属性加进来,到时就可以load/save了。</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345511">#</A> <A
name=345511> </A><A
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx" target=_blank
rel=nofollow>千江月</A> 发表于2005-02-01 16:10:00 IP:
221.219.9.*</DIV>
<DIV class=postText>绘制gif有很多库,vc下比较方便的是gdiplus。
<BR>不过gdiplus在解析gif时有bug,比如我相册中的小狗,解析就有问题,我自己写的解码器就没问题;另外gif文件格式有专利,没必要自己写(要付费?)。
<BR>2000下注册不上,可能你的系统中没有gdiplus.dll,从xp开始系统默认带这个dll,可以到微软网站下载。
<BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345749">#</A> <A
name=345749> </A>Light 发表于2005-02-02 10:48:00 IP:
61.142.24.*</DIV>
<DIV class=postText>如果不能保存,那真遗憾, 不能使用。</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#345924">#</A> <A
name=345924> </A>多情剑客 发表于2005-02-02 17:47:00 IP:
219.133.197.*</DIV>
<DIV class=postText>下载了,保存为.zip文件出错,老兄能否爽快点,提供直接下载?
<BR><BR>或发一份.zip文件给我,谢了:ligs2001@163.com</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#346309">#</A> <A
name=346309> </A><A
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#FeedBack"
target=_blank rel=nofollow>千江月</A> 发表于2005-02-02 22:59:00 IP:
61.51.122.*</DIV>
<DIV class=postText><b>下载了,保存为.zip文件出错,老兄能否爽快点,提供直接下载?</b>
<BR>兄弟,你以为找到一个可以上传的空间就这么容易? <BR><B>或发一份.zip文件给我</B>
<BR>抱歉,我很忙,不可能给每一个人发电子邮件的。 <BR><BR><B> 请大家下载前,仔细看完下载说明,谢谢!</B>
<BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#346547">#</A> <A
name=346547> </A>light 发表于2005-02-03 15:43:00 IP:
219.130.44.*</DIV>
<DIV class=postText>期待。。。。 <BR><BR>另外一个建议, 我发觉你的paint Gif 时, 速度比较快, 我是用同一个Gif
跟IE 比较的。 <BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#346571">#</A> <A
name=346571> </A>light 发表于2005-02-03 15:46:00 IP:
219.130.44.*</DIV>
<DIV class=postText>我建议你不要限制 Gif 的大小, 用 用户来控制, 比如我想限制 200*200, 他想限制未100*100,
这样比较灵活点。</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#346756">#</A> <A
name=346756> </A>LG 发表于2005-02-04 12:07:00 IP:
219.238.170.*</DIV>
<DIV
class=postText>千江月兄,你好,我也在尝试写一个显示GIF图片的类,如果显示的GIF是一动画,我应该用线程来显示还是用定时器好?</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#346991">#</A> <A
name=346991> </A><A
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#FeedBack"
target=_blank rel=nofollow>千江月</A> 发表于2005-02-04 13:38:00 IP:
221.216.158.*</DIV>
<DIV class=postText>各有个的优缺点,根据实际情况而定。
<BR>定时器优点是占用资源少,但是对键盘鼠标的响应会变慢。如果gif动画比较大时,则响应延时很明显。
<BR>线程占用资源多,适合gif文件比较大,要求响应快的场合。 <BR>如果设计类的话,这两个方面都可以考虑一下。 <BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#347282">#</A> <A
name=347282> </A>LG 发表于2005-02-04 19:42:00 IP:
219.238.170.*</DIV>
<DIV class=postText>在用ATL写的控件中,如何获和控件窗口的句柄?</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#349959">#</A> <A
name=349959> </A>light 发表于2005-02-15 13:43:00 IP:
219.130.117.*</DIV>
<DIV class=postText>用在什么地方,可否告知? <BR>春节后才会把永久化存储的属性加进来,到时就可以load/save了。
<BR><BR>回复: <BR><BR>用在类似QQ 的 信息对话框。 通过网络传输。。 <BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#352573">#</A> <A
name=352573> </A>light 发表于2005-02-21 10:13:00 IP:
219.130.65.*</DIV>
<DIV class=postText>怎样实现保存 Gif 在Richedit 里面? <BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#352714">#</A> <A
name=352714> </A>LG 发表于2005-02-21 16:15:00 IP:
219.238.170.*</DIV>
<DIV
class=postText>我写了一个类,可以在MFC程序中用定时器来显示动态GIF图片,但我把它加到ATL工程中按同样的方式来显示就只能显示第一帧。请问在ATL中定时器的使用应该注意些什么?</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#352776">#</A> <A
name=352776> </A><A href="http://保存成zip不能用/" target=_blank
rel=nofollow>网友</A> 发表于2005-02-21 22:18:00 IP: 211.68.82.*</DIV>
<DIV class=postText>按照说明保存成zip不能用</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#352964">#</A> <A
name=352964> </A>LG 发表于2005-02-21 18:01:00 IP:
219.238.170.*</DIV>
<DIV
class=postText>我现在把ATL控件设置为有窗口控件,然后用定时器要显示动态GIF,在TEST CONTAINER中测试时会动的,插入到RICHEIDT中就不会动了,怎么办?
<BR>如果是无窗口控件应该怎么用定时器来显示动态GIF?</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#353708">#</A> <A
name=353708> </A>军营绿花 发表于2005-02-23 15:46:00 IP:
219.133.131.*</DIV>
<DIV class=postText>试用了一下,在VB6下成功 <BR>不过在VB.NET 2003下用不了 <BR>第一次调用未出错,返回0
<BR>但是richtextbox里未出现图像 <BR>第二次调用出错 <BR>“未处理的“System.OverflowException”类型的异常出现在
edit.exe 中。” <BR></DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A title="permalink: 回复:在任意的开发语言的RichEdit控件中,插入GIF动画"
href="http://blog.csdn.net/kql01/archive/2005/01/19/260148.aspx#353712">#</A> <A
name=353712> </A>军营绿花
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -