Classe CAnimateCtrl
Fornisce la funzionalità del controllo animazione comune di Windows.
Sintassi
class CAnimateCtrl : public CWnd
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CAnimateCtrl::CAnimateCtrl | Costruisce un oggetto CAnimateCtrl . |
Metodi pubblici
Nome | Descrizione |
---|---|
CAnimateCtrl::Close | Chiude la clip AVI. |
CAnimateCtrl::Create | Crea un controllo di animazione e lo associa a un CAnimateCtrl oggetto . |
CAnimateCtrl::CreateEx | Crea un controllo di animazione con gli stili estesi di Windows specificati e lo associa a un CAnimateCtrl oggetto . |
CAnimateCtrl::IsPlaying | Indica se è in riproduzione un clip Audio-Video Interleaved (AVI). |
CAnimateCtrl::Open | Apre un clip AVI da un file o una risorsa e visualizza il primo fotogramma. |
CAnimateCtrl::P lay | Riproduce la clip AVI senza suoni. |
CAnimateCtrl::Seek | Visualizza un singolo fotogramma selezionato della clip AVI. |
CAnimateCtrl::Stop | Interrompe la riproduzione del clip AVI. |
Osservazioni:
Questo controllo (e quindi la CAnimateCtrl
classe ) è disponibile solo per i programmi in esecuzione in Windows 95, Windows 98 e Windows NT versione 3.51 e successive.
Un controllo animazione è una finestra rettangolare che visualizza un clip in formato AVI (Audio Video Interleaved), ovvero il formato video/audio standard di Windows. Una clip AVI è una serie di fotogrammi bitmap, ad esempio un filmato.
I controlli di animazione possono riprodurre solo semplici clip AVI. In particolare, le clip da riprodurre da un controllo di animazione devono soddisfare i requisiti seguenti:
Deve essere presente esattamente un flusso video e deve avere almeno un fotogramma.
Nel file possono essere presenti al massimo due flussi (in genere l'altro flusso, se presente, è un flusso audio, anche se il controllo animazione ignora le informazioni audio).
La clip deve essere decompressa o compressa con compressione RLE8.
Nel flusso video non sono consentite modifiche alla tavolozza.
È possibile aggiungere il clip AVI all'applicazione come risorsa AVI oppure può accompagnare l'applicazione come file AVI separato.
Poiché il thread continua l'esecuzione mentre viene visualizzata la clip AVI, un uso comune per un controllo di animazione consiste nell'indicare l'attività di sistema durante un'operazione lunga. Ad esempio, la finestra di dialogo Trova di Esplora file visualizza una lente di ingrandimento mobile mentre il sistema cerca un file.
Se si crea un CAnimateCtrl
oggetto all'interno di una finestra di dialogo o da una risorsa di finestra di dialogo usando l'editor di dialoghi, l'oggetto verrà eliminato automaticamente quando l'utente chiude la finestra di dialogo.
Se si crea un CAnimateCtrl
oggetto all'interno di una finestra, potrebbe essere necessario eliminarlo definitivamente. Se si crea l'oggetto CAnimateCtrl
nello stack, viene eliminato automaticamente. Se si crea l'oggetto nell'heap CAnimateCtrl
usando la new
funzione , è necessario chiamare delete
sull'oggetto per eliminarlo definitivamente. Se si deriva una nuova classe da CAnimateCtrl
e si alloca qualsiasi memoria in tale classe, eseguire l'override del CAnimateCtrl
distruttore per eliminare le allocazioni.
Per altre informazioni sull'uso CAnimateCtrl
di , vedere Controlli e uso di CAnimateCtrl.
Gerarchia di ereditarietà
CAnimateCtrl
Requisiti
Intestazione: afxcmn.h
CAnimateCtrl::CAnimateCtrl
Costruisce un oggetto CAnimateCtrl
.
CAnimateCtrl();
Osservazioni:
È necessario chiamare la funzione Create member prima di poter eseguire qualsiasi altra operazione sull'oggetto creato.
Esempio
// 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
Chiude la clip AVI aperta in precedenza nel controllo animazione (se presente) e la rimuove dalla memoria.
BOOL Close();
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Esempio
Vedere l'esempio per CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::Create
Crea un controllo di animazione e lo associa a un CAnimateCtrl
oggetto .
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametri
dwStyle
Specifica lo stile del controllo animazione. Applicare qualsiasi combinazione degli stili di windows descritti nella sezione Osservazioni di seguito e gli stili di controllo animazione descritti in Stili di controllo animazione in Windows SDK.
rect
Specifica la posizione e le dimensioni del controllo di animazione. Può essere un oggetto CRect o una struttura RECT .
pParentWnd
Specifica la finestra padre del controllo di animazione, in genere un oggetto CDialog
. Non deve essere NULL.
nID
Specifica l'ID del controllo animazione.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Si costruisce un oggetto CAnimateCtrl
in due passaggi. Prima di tutto, chiamare il costruttore e quindi chiamare Create
, che crea il controllo di animazione e lo collega all'oggetto CAnimateCtrl
.
Applicare gli stili di finestra seguenti a un controllo di animazione.
WS_CHILD sempre
WS_VISIBLE in genere
WS_DISABLED raramente
Se vuoi usare gli stili di windows estesi con il controllo animazione, chiama CreateEx invece di Create
.
Oltre agli stili di finestra elencati in precedenza, è possibile applicare uno o più stili di controllo animazione a un controllo di animazione. Per altre informazioni sugli stili dei controlli di animazione, vedi Windows SDK.
Esempio
Vedere l'esempio per CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::CreateEx
Crea un controllo (una finestra figlio) e lo associa all'oggetto CAnimateCtrl
.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametri
dwExStyle
Specifica lo stile esteso del controllo da creare. Per un elenco degli stili di Windows estesi, vedere il parametro dwExStyle per CreateWindowEx in Windows SDK.
dwStyle
Specifica lo stile del controllo animazione. Applicare qualsiasi combinazione degli stili di controllo finestra e animazione descritti in Stili di controllo animazione in Windows SDK.
rect
Riferimento a una struttura RECT che descrive le dimensioni e la posizione della finestra da creare, nelle coordinate client di pParentWnd.
pParentWnd
Puntatore alla finestra padre del controllo.
nID
ID finestra figlio del controllo.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Usare CreateEx
invece di Crea per applicare stili di Windows estesi, specificati dalla prefazione dello stile esteso di Windows WS_EX_.
CAnimateCtrl::IsPlaying
Indica se è in riproduzione un clip Audio-Video Interleaved (AVI).
BOOL IsPlaying() const;
Valore restituito
TRUE se è in riproduzione una clip AVI; in caso contrario, FALSE.
Osservazioni:
Questo metodo invia il messaggio di ACM_ISPLAYING , descritto in Windows SDK.
CAnimateCtrl::Open
Chiamare questa funzione per aprire una clip AVI e visualizzare il primo fotogramma.
BOOL Open(LPCTSTR lpszFileName);
BOOL Open(UINT nID);
Parametri
lpszFileName
Oggetto CString
o puntatore a una stringa con terminazione Null contenente il nome del file AVI o il nome di una risorsa AVI. Se questo parametro è NULL, il sistema chiude la clip AVI aperta in precedenza per il controllo animazione, se presente.
nID
Identificatore di risorsa AVI. Se questo parametro è NULL, il sistema chiude la clip AVI aperta in precedenza per il controllo animazione, se presente.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
La risorsa AVI viene caricata dal modulo che ha creato il controllo animazione.
Open
non supporta il suono in una clip AVI; è possibile aprire solo clip AVI silenziose.
Se il controllo animazione ha lo ACS_AUTOPLAY
stile, il controllo animazione inizierà automaticamente a riprodurre il clip immediatamente dopo averlo aperto. Continuerà a riprodurre il clip in background mentre il thread continua l'esecuzione. Al termine della riproduzione, il clip verrà ripetuto automaticamente.
Se il controllo animazione ha lo ACS_CENTER
stile, la clip AVI verrà centrata nel controllo e le dimensioni del controllo non cambieranno. Se il controllo animazione non ha lo ACS_CENTER
stile, il controllo verrà ridimensionato quando la clip AVI viene aperta fino alle dimensioni delle immagini nella clip AVI. La posizione dell'angolo superiore sinistro del controllo non cambia, ma solo le dimensioni del controllo.
Se il controllo animazione ha lo ACS_TRANSPARENT
stile, il primo fotogramma verrà disegnato utilizzando uno sfondo trasparente anziché il colore di sfondo specificato nella clip di animazione.
Esempio
Vedere l'esempio per CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::P lay
Chiamare questa funzione per riprodurre un clip AVI in un controllo di animazione.
BOOL Play(
UINT nFrom,
UINT nTo,
UINT nRep);
Parametri
nFrom
Indice in base zero del frame in cui inizia la riproduzione. Il valore deve essere minore di 65.536. Il valore 0 indica che inizia con il primo fotogramma nella clip AVI.
Nper
Indice in base zero del frame in cui termina la riproduzione. Il valore deve essere minore di 65.536. Il valore - 1 indica che termina con l'ultimo fotogramma nella clip AVI.
nRep
Numero di volte in cui riprodurre il clip AVI. Il valore - 1 indica che il file viene riprodotto per un periodo illimitato.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Il controllo animazione riproduce la clip in background mentre il thread continua l'esecuzione. Se il controllo animazione ha ACS_TRANSPARENT
stile, la clip AVI verrà riprodotta usando uno sfondo trasparente anziché il colore di sfondo specificato nella clip di animazione.
Esempio
Vedere l'esempio per CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::Seek
Chiamare questa funzione per visualizzare in modo statico un singolo fotogramma della clip AVI.
BOOL Seek(UINT nTo);
Parametri
Nper
Indice in base zero del frame da visualizzare. Il valore deve essere minore di 65.536. Il valore 0 indica la visualizzazione del primo fotogramma nella clip AVI. Il valore -1 indica la visualizzazione dell'ultimo fotogramma nella clip AVI.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Se il controllo animazione ha ACS_TRANSPARENT
stile, la clip AVI verrà disegnata utilizzando uno sfondo trasparente anziché il colore di sfondo specificato nella clip di animazione.
Esempio
Vedere l'esempio per CAnimateCtrl::CAnimateCtrl.
CAnimateCtrl::Stop
Chiamare questa funzione per interrompere la riproduzione di un clip AVI in un controllo animazione.
BOOL Stop();
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Esempio
Vedere l'esempio per CAnimateCtrl::CAnimateCtrl.
Vedi anche
Classe CWnd
Grafico della gerarchia
CAnimateCtrl::Create
ON_CONTROL