DynamicGif 1.41 && 类MSN "动漫传情”实现

最近一个多月忙着分析XMPP协议和libJingle库,基本告一个段落,抽空把DynamicGif的更新版本发上来,顺便介绍如何在.Net下使用。


主要的更新:

  1. 更新了一个bug:以前使用的Thunk代码在有些CPU上有些问题,考虑到以后可能将这个控件移植到Windows Mobile上,所以修改了Thunk机制,目前支持绝大部分CPU。必要时可以不用Thunk
  2. 添加了一个新的类,主要用在Richedit模式下,尽可能的将CPU的占用率降到最低。不建议使用该类,因为后续可能有较大的改动(要删除部分功能,而不是添加),可能会导致兼容性问题。
  3. 添加了一个新的功能来实现类似MSN"动漫传情的功能。

函数的原型如下:

[id(3), helpstring("方法ShowFlash")]

HRESULT ShowFlash([in]OLE_HANDLE hParent,[in] BSTR bstrFlash, [in] ULONG ulTimeOut, [out,retval] OLE_HANDLE* hWnd);

其中:

  hParent:   父窗口句柄

  bstrFlash:待显示的本地Flash文件全路径

  ulTimeout: 最长显示时间,-1表示无限长的时间,否则是最长显示时间,ulTimeout 毫秒。

  hWnd     显示Flash的窗口句柄,成功返回窗口句柄

说明:

   成功返回S_OK,失败返回E_FAIL。主要功能是透明的显示一个Flash。这里需要说明的是:这样的Flash在设计时需要设定,在执行结束时,发出一个“quit”命令,通知容器准备退出。对于设计不符合这种标准的,这里简单的给出一个解决方案,即设定最长播放时间,到时自动退出。

 

使用方法:(C#)

  DynamicGifLib.DynGifManagerClass mgr = new DynamicGifLib.DynGifManagerClass();

  Int hwnd = mgr.ShowFlash((int)this.Handle, "z://flash_5.swf", 1000);

// 可以在父窗口的WM_MOVE 消息中添加代码,来保证flash始终显示在父窗口之上

// 注意,一定要判断窗口句柄是否有效,因为窗口会自动销毁

// 注意,不要删除hwnd,会自动销毁

     if( ::IsWindow( m_hwndFlashShow ) )

     {

         ::SetWindowPos(m_hwndFlashShow,HWND_TOP,x,y,0,0,SWP_NOSIZE|SWP_NOZORDER );

     }

 

 // 在WM_SIZE中处理类上述代码

 

目前作为beta版,可能会有不少bug,欢迎指出,谢谢!

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值