### 使用 CGifCtrl 显示 Gif 更轻松

在互联网上随处都可以看到 Gif 动画，它能够以更生动的方式吸引我们。在程序中，我们也经常见到 Gif 的身影。例如，大家经常使用聊天软件 OICQ，它利用 Gif 形象的表示主人的情绪，如图 1 所示。

图 1 QQ 聊天窗口

在 Visual C++中没有现成的控件可以直接显示 Gif 动画，这就给一些初学人员实现该功能带来了一些困难。基于此，本例中我们设计了一个能够显示 GIF 动画的 OCX 控件。利用该控件，我们可以非常方便地显示 GIF 动画。效果如图 2 所示。

图 2 运行效果

下面我们来介绍实例的实现过程。

（1）选择“File/New”菜单项，打开新建窗口，选择“Project”选项卡，如图 3 所示。

图 3 新建窗口

（2）在工程列表中选择“MFC AppWizard(exe)”选项，表示创建 MFC 应用程序，在“Project name”编辑框中输入工程名称，单击“OK”按钮开始创建工程，如图 4 所示。

图 4 MFC 向导 1 窗口

（3）选择“Dialog based”选项，表示创建一个基于对话框的应用程序。单击“Finish”按钮完成工程的创建，将创建一个对话框工程，如图 5 所示。

图 5 工程窗口

（4）删除掉对话框中的控件。鼠标右键单击对话框，在弹出的快捷菜单中选择“Insert ActiveX Control”菜单项，如图 6 所示。

图 6 插入 ActiveX 控件

（5）此时会弹出“Insert ActiveX Control”窗口，如图 7 所示。

图 7 Insert ActiveX Control 窗口

（6）在列表中选择“GifCtrl Control”选项，GifCtrl 是我们设计的一个 OCX 控件，用于显示 GIF 动画。系统在注册 GifCtrl 控件之后，列表中采用有“GifCtrl Control”选项。单击“OK”按钮将其添加到对话框中。如图 8 所示。

图 8 导入 OCX 控件

（7）向对话框中添加静态文本、编辑框和按钮控件，如图 9 所示。

图 9 对话框资源设计

（8）按“Ctrl + W”组合键打开类向导窗口，为控件设置一个名称，如图 10 所示。

图 10 类向导窗口

（9）处理“Load”按钮的单击事件，加载并显示 Gif 动画。

void CShowGifDlg::OnBtLoad()

{

CFileDialog flDlg(TRUE, "", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

"GIF 动画|*.gif||"); //定义文件打开对话框

if (flDlg.DoModal()==IDOK)

{

CString szGif = flDlg.GetPathName(); //获取文件名称

m_GifName.SetWindowText(szGif); //在编辑框中显示文件名称

m_Gif.LoadImage(szGif); //在 OCX 控件中显示 GIF 动画

}

}