程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 在VC程序中加載GIF動畫

在VC程序中加載GIF動畫

編輯:vc教程

  PictureEx圖片顯示類支持以下格式的圖片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,我特別推崇的是可以做出動畫,而且輕而易舉,確實很COOL。
下面是詳細的編程過程:

1. 新建項目:在VC6中用MFC新建一個基於對話框的GifDemo應用程序,接受所有缺省選項即可;

2.在項目中插入文件:把PictureEx.h,PictureEx.cpp文件copy 到項目文件夾下,Project->Add to Project->Files中選上PictureEx.h,PictureEx.cpp, Insert;

3.加入圖片控件:從對話框控件中把Picture Control(圖片控件)拖入主對話框中,修改其屬性:ID:IDC_GIF,TYPE:Rectangle,其余接受缺省選項。再在ClassWiard中為IDF_GIF加入CSatic控制變量m_GifPic, 注意看一下,GifDemoDlg.h中是否加上了#include "PictureEx.h"(由ClassWiard加入)。然後將CSatic m_GifPic;更改成CPictureEx m_GifPic;

4.加載動畫文件:先將要加載的動畫文件放到 res 資源文件夾下,再將其Import進項目中,由於MFC只支持256BMP文件的圖片,因此,我們要新建一個圖片類型:"GIF",我在這裡將我網站的宣傳圖片roaring.gif放進去 ,並將其ID修改成:IDR_GIFROARING。

import(導入)gif動畫的詳細過程:
在resourcevIEw窗口中,單擊鼠標右鍵,在出現的環境菜單中選擇“import...”命令,會出現“import resource”選擇文件對話框,文件類型選擇“所有文件(*.*)”,open as 選項為"auto",再選擇動畫文件所在目錄,選上要載入的動畫文件 roaring.gif,再單擊 import,由於gif動畫類型不是vc默認的文件類型,這時會出現"custom resource type"對話框,鍵入“"gif"”,再單擊ok,然後再修改其id。

5.在程序的適當位置添入加載代碼: 這裡,我們在CGIfDemoDlg::OnInitDialog()函數中加入如下代碼:
// TODO: Add extra initialization here
if (m_GifPic.Load(MAKEINTRESOURCE(IDR_GIFROARING),_T("Gif")))
m_GifPic.Draw();

如果僅僅把動畫載入,到這就可以了,運行一下,應該看看您的的成果了。

下面附帶說說如何將這幅動畫制作成超鏈接,以後,咱們也可以宣傳自已的公司、網站或產品了。

6.利用ClassWiard加入一個LButtonDown鼠標左鍵消息處理函數CGIfDemoDlg::OnLButtonDown(UINT nFlags, CPoint point), 添入如下代碼:
void CGIfDemoDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
m_GifPic.GetWindowRect(&rect);
ScreenToClIEnt(&rect);

if (rect.PtInRect(point))
ShellExecute(AfxGetMainWnd() ->m_hWnd,_T("open"),
_T("http://roaringwind.best.163.com"),_T(""),NULL,0);


CDialog::OnLButtonDown(nFlags, point);
}

我在這兒將我主頁的地址放上了,運行,點擊動畫圖片就能進入我的站點的了。當然要是能象所有的超鏈接一樣,能將鼠標變成手形,就更好了。

7.改變鼠標形狀:將一個鼠標文件放在res文件夾中,IMPORT,ID:IDC_CURSOR1,利用ClassWiard加入一個WM_SETCURSOR消息處理函數CGIfDemoDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message), 添入如下代碼:
BOOL CGIfDemoDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
m_GifPic.GetWindowRect(&rect);
ScreenToClIEnt(&rect);

CPoint point;
GetCursorPos(&point);
ScreenToClIEnt(&point);

if (rect.PtInRect(point) && m_hCursor)
{
SetCursor(m_hCursor);
return TRUE;
};

return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved