Condividi tramite


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 CAnimateCtrldi , vedere Controlli e uso di CAnimateCtrl.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

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