Bagikan melalui


Kelas CAnimatectrl

Menyediakan fungsionalitas kontrol animasi umum Windows.

Sintaks

class CAnimateCtrl : public CWnd

Anggota

Konstruktor Publik

Nama Deskripsi
CAnimatectrl::CAnimatectrl Membuat CAnimateCtrl objek.

Metode Publik

Nama Deskripsi
CAnimatectrl::Close Menutup klip AVI.
CAnimatectrl::Create Membuat kontrol animasi dan melampirkannya ke CAnimateCtrl objek.
CAnimateCtrl::CreateEx Membuat kontrol animasi dengan gaya perluasan Windows yang ditentukan dan melampirkannya ke CAnimateCtrl objek.
CAnimatectrl::IsPlaying Menunjukkan apakah klip Audio-Video Interleaved (AVI) sedang diputar.
CAnimateCtrl::Buka Membuka klip AVI dari file atau sumber daya dan menampilkan bingkai pertama.
CAnimateCtrl::P lay Memutar klip AVI tanpa suara.
CAnimatectrl::Seek Menampilkan bingkai tunggal terpilih dari klip AVI.
CAnimatectrl::Stop Berhenti memutar klip AVI.

Keterangan

Kontrol ini (dan oleh karena itu CAnimateCtrl kelas) hanya tersedia untuk program yang berjalan di bawah Windows 95, Windows 98, dan Windows NT versi 3.51 dan yang lebih baru.

Kontrol animasi adalah jendela persegi panjang yang menampilkan klip dalam format AVI (Audio Video Interleaved) — format video/audio Windows standar. Klip AVI adalah serangkaian bingkai bitmap, seperti film.

Kontrol animasi hanya dapat memutar klip AVI sederhana. Secara khusus, klip yang akan dimainkan oleh kontrol animasi harus memenuhi persyaratan berikut:

  • Harus ada satu aliran video dan harus memiliki setidaknya satu bingkai.

  • Mungkin ada paling banyak dua aliran dalam file (biasanya aliran lain, jika ada, adalah aliran audio, meskipun kontrol animasi mengabaikan informasi audio).

  • Klip harus tidak dikompresi atau dikompresi dengan pemadatan RLE8.

  • Tidak ada perubahan palet yang diizinkan dalam aliran video.

Anda dapat menambahkan klip AVI ke aplikasi Anda sebagai sumber daya AVI, atau dapat menemani aplikasi Anda sebagai file AVI terpisah.

Karena utas Anda terus dijalankan saat klip AVI ditampilkan, salah satu penggunaan umum untuk kontrol animasi adalah menunjukkan aktivitas sistem selama operasi yang panjang. Misalnya, kotak dialog Temukan File Explorer menampilkan kaca pembesar bergerak saat sistem mencari file.

Jika Anda membuat CAnimateCtrl objek dalam kotak dialog atau dari sumber daya dialog menggunakan editor dialog, objek tersebut akan dihancurkan secara otomatis saat pengguna menutup kotak dialog.

Jika Anda membuat CAnimateCtrl objek di dalam jendela, Anda mungkin perlu menghancurkannya. Jika Anda membuat CAnimateCtrl objek pada tumpukan, objek akan dihancurkan secara otomatis. Jika Anda membuat CAnimateCtrl objek pada tumpukan dengan menggunakan new fungsi , Anda harus memanggil delete objek untuk menghancurkannya. Jika Anda memperoleh kelas baru dari CAnimateCtrl dan mengalokasikan memori apa pun di kelas itu CAnimateCtrl , ambil alih destruktor untuk membuang alokasi.

Untuk informasi selengkapnya tentang menggunakan CAnimateCtrl, lihat Kontrol dan Menggunakan CAnimateCtrl.

Hierarki Warisan

CObject

CCmdTarget

CWnd

CAnimateCtrl

Persyaratan

Header: afxcmn.h

CAnimatectrl::CAnimatectrl

Membuat CAnimateCtrl objek.

CAnimateCtrl();

Keterangan

Anda harus memanggil fungsi Buat anggota sebelum dapat melakukan operasi lain pada objek yang Anda buat.

Contoh

// This example creates a secondary thread that implements
// the methods of CAnimateCtrl. The procedure of the thread
// is MyClipThreadProc and the thread was created with the
// code AfxBeginThread( MyClipThreadProc, (LPVOID) pParentWnd).
// The example code creates and initializes an animation control,
// then proceeds to pump messages from the queue until one the
// private messages WM_STOPCLIP, WM_PLAYCLIP, WM_SHOWFIRSTFRAME or
// WM_SHOWLASTFRAME is received. The appropriate action is done for
// these messages. The thread ends when the WM_STOPCLIP is received.
// NOTE: the thread parameter, pParam, is a pointer to a CWnd object
// that will be the parent of the animation control.

#define WM_STOPCLIP WM_USER + 1
#define WM_PLAYCLIP WM_USER + 2
#define WM_SHOWFIRSTFRAME WM_USER + 3
#define WM_SHOWLASTFRAME WM_USER + 4

UINT MyClipThreadProc(LPVOID pParam)
{
   // NOTE: pParentWnd is the parent window of the animation control.
   CWnd *pParentWnd = (CWnd *)pParam;
   CAnimateCtrl cAnimCtrl;

   // Create the animation control.
   if (!cAnimCtrl.Create(WS_CHILD | WS_VISIBLE | ACS_CENTER,
                         CRect(10, 10, 100, 100), pParentWnd, 1))
   {
      return false;
   }

   // Open the AVI file.
   if (!cAnimCtrl.Open(_T("MyAvi.avi")))
   {
      return false;
   }

   // Pump message from the queue until the stop play message is received.
   MSG msg;
   while (GetMessage(&msg, NULL, 0, 0) && (msg.message != WM_STOPCLIP))
   {
      switch (msg.message)
      {
         // Start playing from the first frame to the last,
         // continuously repeating.
      case WM_PLAYCLIP:
         if (!cAnimCtrl.Play(0, (UINT)-1, (UINT)-1))
            return false;
         break;

         // Show the first frame.
      case WM_SHOWFIRSTFRAME:
         if (!cAnimCtrl.Seek(0))
            return false;
         cAnimCtrl.RedrawWindow();
         break;

         // Show the last frame.
      case WM_SHOWLASTFRAME:
         if (!cAnimCtrl.Seek((UINT)-1))
            return false;
         cAnimCtrl.RedrawWindow();
         break;
      }

      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   cAnimCtrl.Stop();
   cAnimCtrl.Close();

   return true;
}

CAnimatectrl::Close

Menutup klip AVI yang sebelumnya dibuka di kontrol animasi (jika ada) dan menghapusnya dari memori.

BOOL Close();

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, nol.

Contoh

Lihat contoh untuk CAnimateCtrl::CAnimateCtrl.

CAnimatectrl::Create

Membuat kontrol animasi dan melampirkannya ke CAnimateCtrl objek.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parameter

dwStyle
Menentukan gaya kontrol animasi. Terapkan kombinasi gaya jendela yang dijelaskan di bagian Keterangan di bawah ini dan gaya kontrol animasi yang dijelaskan dalam Gaya Kontrol Animasi di Windows SDK.

rect
Menentukan posisi dan ukuran kontrol animasi. Ini bisa berupa objek CRect atau struktur RECT .

pParentWnd
Menentukan jendela induk kontrol animasi, biasanya .CDialog Ini tidak boleh NULL.

Nid
Menentukan ID kontrol animasi.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, nol.

Keterangan

Anda membangun CAnimateCtrl dalam dua langkah. Pertama, panggil konstruktor, lalu panggil Create, yang membuat kontrol animasi dan melampirkannya ke CAnimateCtrl objek.

Terapkan gaya jendela berikut ke kontrol animasi.

  • WS_CHILD Always

  • WS_VISIBLE Biasanya

  • WS_DISABLED Jarang

Jika Anda ingin menggunakan gaya jendela yang diperluas dengan kontrol animasi Anda, panggil CreateEx alih-alih Create.

Selain gaya jendela yang tercantum di atas, Anda mungkin ingin menerapkan satu atau beberapa gaya kontrol animasi ke kontrol animasi. Lihat Windows SDK untuk informasi selengkapnya tentang gaya kontrol animasi.

Contoh

Lihat contoh untuk CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::CreateEx

Membuat kontrol (jendela anak) dan mengaitkannya dengan CAnimateCtrl objek.

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parameter

dwExStyle
Menentukan gaya kontrol yang diperluas yang sedang dibuat. Untuk daftar gaya Windows yang diperluas, lihat parameter dwExStyle untuk CreateWindowEx di Windows SDK.

dwStyle
Menentukan gaya kontrol animasi. Terapkan kombinasi gaya kontrol jendela dan animasi yang dijelaskan dalam Gaya Kontrol Animasi di Windows SDK.

rect
Referensi ke struktur RECT yang menjelaskan ukuran dan posisi jendela yang akan dibuat, dalam koordinat klien pParentWnd.

pParentWnd
Penunjuk ke jendela yang merupakan induk kontrol.

Nid
ID jendela anak kontrol.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Gunakan CreateEx alih-alih Buat untuk menerapkan gaya Windows yang diperluas, yang ditentukan oleh preface gaya windows yang diperluas WS_EX_.

CAnimatectrl::IsPlaying

Menunjukkan apakah klip Audio-Video Interleaved (AVI) sedang diputar.

BOOL IsPlaying() const;

Tampilkan Nilai

TRUE jika klip AVI diputar; jika tidak, FALSE.

Keterangan

Metode ini mengirim pesan ACM_ISPLAYING , yang dijelaskan dalam Windows SDK.

CAnimateCtrl::Buka

Panggil fungsi ini untuk membuka klip AVI dan menampilkan bingkai pertamanya.

BOOL Open(LPCTSTR lpszFileName);
BOOL Open(UINT nID);

Parameter

lpszFileName
Objek CString atau penunjuk ke string null-terminated yang berisi nama file AVI atau nama sumber daya AVI. Jika parameter ini NULL, sistem menutup klip AVI yang sebelumnya dibuka untuk kontrol animasi, jika ada.

Nid
Pengidentifikasi sumber daya AVI. Jika parameter ini NULL, sistem menutup klip AVI yang sebelumnya dibuka untuk kontrol animasi, jika ada.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, nol.

Keterangan

Sumber daya AVI dimuat dari modul yang membuat kontrol animasi.

Open tidak mendukung suara dalam klip AVI; Anda hanya dapat membuka klip AVI senyap.

Jika kontrol animasi memiliki ACS_AUTOPLAY gaya, kontrol animasi akan otomatis mulai memutar klip segera setelah terbuka. Ini akan terus memutar klip di latar belakang saat utas Anda terus dijalankan. Ketika klip selesai diputar, klip akan diulang secara otomatis.

Jika kontrol animasi memiliki ACS_CENTER gaya, klip AVI akan dipusatkan di kontrol dan ukuran kontrol tidak akan berubah. Jika kontrol animasi tidak memiliki ACS_CENTER gaya, kontrol akan diubah ukurannya ketika klip AVI dibuka ke ukuran gambar dalam klip AVI. Posisi sudut kiri atas kontrol tidak akan berubah, hanya ukuran kontrol.

Jika kontrol animasi memiliki ACS_TRANSPARENT gaya, bingkai pertama akan digambar menggunakan latar belakang transparan daripada warna latar belakang yang ditentukan dalam klip animasi.

Contoh

Lihat contoh untuk CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::P lay

Panggil fungsi ini untuk memutar klip AVI dalam kontrol animasi.

BOOL Play(
    UINT nFrom,
    UINT nTo,
    UINT nRep);

Parameter

nDari
Indeks berbasis nol dari bingkai tempat pemutaran dimulai. Nilai harus kurang dari 65.536. Nilai 0 berarti dimulai dengan bingkai pertama dalam klip AVI.

nTo
Indeks berbasis nol dari bingkai tempat pemutaran berakhir. Nilai harus kurang dari 65.536. Nilai - 1 berarti berakhir dengan bingkai terakhir dalam klip AVI.

nRep
Berapa kali untuk memutar ulang klip AVI. Nilai - 1 berarti memutar ulang file tanpa batas waktu.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, nol.

Keterangan

Kontrol animasi akan memutar klip di latar belakang saat utas Anda terus dijalankan. Jika kontrol animasi memiliki ACS_TRANSPARENT gaya, klip AVI akan diputar menggunakan latar belakang transparan daripada warna latar belakang yang ditentukan dalam klip animasi.

Contoh

Lihat contoh untuk CAnimateCtrl::CAnimateCtrl.

CAnimatectrl::Seek

Panggil fungsi ini untuk menampilkan satu bingkai klip AVI Anda secara statis.

BOOL Seek(UINT nTo);

Parameter

nTo
Indeks berbasis nol dari bingkai yang akan ditampilkan. Nilai harus kurang dari 65.536. Nilai 0 berarti menampilkan bingkai pertama dalam klip AVI. Nilai -1 berarti menampilkan bingkai terakhir dalam klip AVI.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, nol.

Keterangan

Jika kontrol animasi memiliki ACS_TRANSPARENT gaya, klip AVI akan digambar menggunakan latar belakang transparan daripada warna latar belakang yang ditentukan dalam klip animasi.

Contoh

Lihat contoh untuk CAnimateCtrl::CAnimateCtrl.

CAnimatectrl::Stop

Panggil fungsi ini untuk berhenti memutar klip AVI dalam kontrol animasi.

BOOL Stop();

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, nol.

Contoh

Lihat contoh untuk CAnimateCtrl::CAnimateCtrl.

Lihat juga

Kelas CWnd
Bagan Hierarki
CAnimatectrl::Create
ON_CONTROL