DynamicGif 1.2

DynamicGif控件1.201Beta版发布,新增插入图像时指定大小的功能及辅助COM类,简化非VC环境下使用难度。适用于VC、VB、C#等环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

早想降低一下DynamicGif控件的使用难度 ,正好这两天有时间,就更新了一下。

DynamicGif 1.201 Beta 2007-3-13 更新)

下载办法:

用FlashGet或者右键“另存为”下载下面的这个文件。除去前面的61字节后,用zip扩展名保存。

解压缩zip文件即可得到控件。(GIF:39,572 zip:39,511 DLL:98,304 Bytes )

https://p-blog.youkuaiyun.com/images/p_blog_youkuaiyun.com/kql01/283737/o_upload.gif

新增功能说明:

1、添加两个导出函数:

原来支持两个函数:

STDAPI InsertGifToRicheditA( HWND hWnd, LPCSTR lpszGifFile );

STDAPI InsertGifToRicheditW( HWND hWnd, LPCWSTR lpszGifFile);

现在增加了:

STDAPI InsertGifToRichedit2A( HWND hWnd, LPCSTR lpszGifFile,LONG lWidth,LONG lHeight );

STDAPI InsertGifToRichedit2W( HWND hWnd, LPCWSTR lpszGifFile,LONG lWidth,LONG lHeight );

允许在插入图像时,指定图像在Richedit中的初始大小。如果lWidthlHeight均为0,则按照图像原始大小插入。

 

2、增加了一个辅助的COM类,用在非VC的开发环境中,免去处理RichEdit一些OLE接口的问题。

COM接口定义如下:

[

object,

uuid(C51DA 89C -924D-4AE7-B740-09CC68192E09),

dual,

nonextensible,

helpstring("IDynGifManager 接口"),

pointer_default(unique)

]

interface IDynGifManager : IDispatch

{   

     // 将图像插入到指定的Richedit窗口,并设置初始大小,当widthheight均为0时,表示保持图像原始大小。

   [id(1), helpstring("方法InsertImage")]

HRESULT InsertImage([in] OLE_HANDLE hwnd,[in] BSTR bstrImagePath, [in] LONG ulWidth, [in] LONG ulHeight,[out,retval] IDispatch** hObj);

     //获取对象Richedit窗口hwndDynamicGif对象的信息

     //信息格式为:

     // 每个对象用一行表示,属性间用Tab分割

// 格式如下:

//     位置(0下标开始) Text属性 Width Height ImagePath

// 如果没用DynamicGif存在,则返回空字符串。

     [id(2), helpstring("方法GetObjectsInfo")]

HRESULT GetObjectsInfo([in] OLE_HANDLE hwnd,[out,retval] BSTR* pbstrObjectsInfo);

 

};

 

 使用方法:

1 Form或者对话框中显示一个Gif或其他类型的图像

这种使用方法最简单,将控件放到Form/对话框中,并在初始化的时候,调用LoadFromFile即可。(保留Text属性,用来解析图像和表情符号对应)

2 Richedit中插入图像

VC中的使用方法参考前面的文章,现在重点介绍一下在VB/C#中的用法,至于其他的环境,请自己摸索一下吧。

1)在控件面板中,将DynamicGif控件放入到部件库,会有一个小手出现

2)在相应的函数中,使用下面的语句将控件插入Richedit中:

VB

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim dynMgr As DynamicGifLib.DynGifManagerClass

        Dim objGif As DynamicGifLib.IDynamicGif

        dynMgr = New DynamicGifLib.DynGifManagerClass

        objGif = dynMgr.InsertImage(RichTextBox1.Handle().ToInt32(), "e:/L.gif", 72, 72)

        objGif.LoadFromFile("e:/1.gif")

    End Sub

C#

         private void Form1_Load(object sender, System.EventArgs e)

         {

              DynamicGifLib.DynGifManagerClass dynGif

= new  DynamicGifLib.DynGifManagerClass();

              object obj = dynGif.InsertImage( richTextBox1.Handle.ToInt32(),

                   "e://L.gif",72,72 );

              DynamicGifLib.IDynamicGif objGif = (DynamicGifLib.IDynamicGif)obj;

              objGif.LoadFromFile( "e://1.gif");

              objGif.AboutBox();

              objGif.DisplaySize = 128 * 65536 + 128 '显示图像大小为 128 * 128

             

         }

 

 

说明:

1 添加图像显示大小属性:DisplaySize;用一个long整数来表示,其中LOWORD为图像宽度,HIWORD为高度,即DisplaySize = Height * 65536 + Width

2 Richedit内部中对象信息可以通过GetObjectsInfo函数来获取,如果需要传输时将文字和图像文件分离,需要自己解析对象的信息,并写相关的协议。

 

 

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值