首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

MFC 專案整合 GIF 動畫顯示與超連結:PictureEx 類應用實例

     編輯:VC 教學

前言

CPictureEx 開源類別支援 GIF (含動畫 GIF87a/89a)、JPEG、BMP、WMF、ICO 等格式,且介面簡單。本文示範在 Dialog-based 專案中載入動畫 GIF、點擊跳轉網址、滑鼠懸停切換手型游標。

整合步驟

1. 專案建立與類別匯入

  • AppWizard → Dialog-based 專案 GifDemo。
  • 將 PictureEx.h、PictureEx.cpp 複製至專案目錄,專案 → Add to Project → Files 選取兩檔。

2. 對話框配置

  • 工具箱拖入 Picture Control,ID: IDC_GIF,Type: Rectangle。
  • ClassWizard 為 IDC_GIF 加入控件變數 m_GifPic,類型 CStatic。
  • 修改標頭檔:CPictureEx m_GifPic; (取代 CStatic),並確認 #include "PictureEx.h"。

3. 匯入 GIF 為自訂資源

  1. 將 roaring.gif 放入 res 目錄。
  2. Resource View 右鍵 → Import → 檔案類型 All Files → 選取 roaring.gif。
  3. 彈出 Custom Resource Type 輸入 GIF,確定。
  4. 修改資源 ID 為 IDR_GIFROARING。

4. 載入並播放動畫


BOOL CGifDemoDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    if (m_GifPic.Load(MAKEINTRESOURCE(IDR_GIFROARING), _T("GIF")))
        m_GifPic.Draw(); // 開始播放
    return TRUE;
}

5. 點擊動畫跳轉超連結


void CGifDemoDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    CRect rect; m_GifPic.GetWindowRect(&rect); ScreenToClient(&rect);
    if (rect.PtInRect(point))
        ShellExecute(m_hWnd, _T("open"), _T("https://roaringwind.best.163.com"), NULL, NULL, SW_SHOWNORMAL);
    CDialog::OnLButtonDown(nFlags, point);
}

6. 滑鼠懸停切換手型游標

  • 匯入 hand.cur 為游標資源,ID: IDC_CURSOR1。
  • ClassWizard 加入 WM_SETCURSOR 訊息處理:

BOOL CGifDemoDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
    CRect rect; m_GifPic.GetWindowRect(&rect); ScreenToClient(&rect);
    CPoint pt; GetCursorPos(&pt); ScreenToClient(&pt);

    if (rect.PtInRect(pt) && m_hCursor)
    {
        ::SetCursor(m_hCursor);
        return TRUE;
    }
    return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

在 OnInitDialog 載入游標:
m_hCursor = AfxGetApp()->LoadCursor(IDC_CURSOR1);

關鍵類別方法

方法說明
Load(resource, type)從資源或檔案載入圖片,type 為 "GIF"、"JPEG" 等。
Draw()啟動動畫播放 (內部設定 Timer 逐幀繪製)。
Stop()停止動畫。
GetWindowRect繼承自 CWnd,取得螢幕座標矩形。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved