制作可以显示GIF动图的activeX 控件
阅读原文时间:2023年07月05日阅读:1

因为工作需要,我需要一个可以显示gif 动图的控件,用来在VBS中显示动图,结果找了半天发现根本没有这样的控件,所以只能搜集资料自己来制作一个。

下面记录一下步骤:

1. 下载 PictureEx.h 和 PictureEx.cpp。

这两个文件是处理gif 图片的核心,文件中读取动图并一帧一帧的保存下来然后循环显示。

2. 创建一个含有对话框界面的activeX 工程。

创建含有界面的工程主要是因为,上面处理gif 图的类是继承自CStatic的 ,在界面拖一个Picture (static)控件就可以跟这个类产生关联,从而调用类的方法在控件中显示动图。可     以不用读懂里面的代码就可以使用,对于我这种懒人来说,这种方法更实用,哈哈。

3. 调用类中的方法加载和显示图片。

1. 创建带界面的ActiveX 工程。

1.1 新建activex 工程。

  1. 创建一个activex 工程名字为PicEx.

ok --> next --> next -->next : create control based on 选择默认的none :

1.2 向activex 添加mfc 窗体

  1.  打开资源视图,在Dialog 上右键add Resource :

2. 删掉对话框上的“ok” 和“cancel” 按钮。修改对话框属性:border 改为 none, control 改为 True ,Style改为Child,System Menu改为False,Visible改为True,ID改为IDD_MAIN_DIALOG,然后在对话框中双击,为对话框添加一个类,如下图:

点击“finish”。在解决方案资源管理器中新增了ViewDialog.h和ViewDialog.cpp 这两个文件就是我们新建的对话框类。

3. 在新建的对话框上拖一个Picture Control 控件,修改控件ID为IDC_PIC :

对话框建立完成,接下来就是要把它添加到ActiveX控件中去。

4.  在picExCtrl.h 文件中,定义对话框实例m_VideoDlg :

5. 然后在picExCtrl 类中定义两个消息映射:窗体创建完成消息映射和窗体改变大小消息映射。

在VS2005 中,打开类视图,选中CpicExCtrl 这个类,在属性页面中选择“Message”图标,

选择WM_CREATE  消息--> Add“OnCreate” ,选择"WM_SIZE"消息--> Add "OnSize";这样就在picExCtrl中添加了两个消息处理函数OnCreate和ONSize。

打开picExCtrl.cpp 为ONCreate 添加如下代码Create是在ActiveX控件中创建一个窗体对话框,IDD_MAIN_DIALOG就是刚刚新建的对话框:

在OnSize函数编写代码如下(MoveWindow是确定窗体对话框在ActiveX中的大小):

到此就完成了一个带界面的activeX。

1.3 调整Pictrure 控件的尺寸

Picture 控件是用来显示GIF 动图的,为了让整个界面看起来就是一个控件,而不是在一个对话框里有个控件,我们可以调整Picture 控件的尺寸跟对话框尺寸相同,并且随着对话框尺寸的变化而变化。做法如下:

首先给ViewDialog 类添加WM_SIZE 消息对应的事件:

在类视图中,选中CViewDialog 类,在属性中选择“Message”图标,在消息中选择“WM_SIZE” 添加 OnSize 函数:

打开ViewDialog.cpp 找到刚刚添加的函数OnSize ,添加如下代码(其中IDC_PIC 就是picture 控件的ID):

这样整个dialog 就被picture 控件所覆盖了,并且随着dialog 尺寸的改变而改变。

2. 图片的显示

至此,picture 控件与能处理图片的CPicuterEx 类产生了关联。(picture 控件其实是Cstatic 类型的控件,而 CPictureEx 类是继承自 CStatic 类的子类)。

内部有了CPicuterEx 的支持就可能显示GIF图片了,接下来就要定义 activex 外部接口来提供给用户来调用了。步骤如下:

在类视图中,找到picExLib ,展开前面的加号,选中_DpicEx 右键,Add---> Add Method ,添加一个外部函数Load,个参数如下:

打开picExCtrl.cpp 为刚才添加的Load函数添加代码:

函数执行正确返回0,错误返回。

另:CPictureEx 中的Draw()  函数最后返回的是FALSE ,我这里给改成了TRUE 。

到此,一个可以显示GIF 动图的activeX 控件就完成了。

参考文献:https://blog.csdn.net/arv002/article/details/113739928

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章