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
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.