Partilhar via


Classe CWaitCursor

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Fornece uma forma de uma linha para mostrar um cursor de espera, que normalmente é mostrado como uma ampulheta, durante uma operação longa.

Sintaxe

class CWaitCursor

Membros

Construtores Públicos

Nome Description
CWaitCursor::CWaitCursor Constrói um CWaitCursor objeto e mostra o cursor de espera.

Métodos Públicos

Nome Description
CWaitCursor::Restaurar Restaura o cursor de espera depois de ter sido alterado.

Observações

CWaitCursor não tem uma classe base.

Boas práticas de programação para Windows exigem que mostre um cursor de espera sempre que realiza uma operação que demora um tempo considerável.

Para mostrar um cursor de espera, basta definir uma CWaitCursor variável antes do código que realiza a operação longa. O construtor do objeto faz com que o cursor de espera seja automaticamente exibido.

Quando o objeto sai do âmbito (no final do bloco em que o CWaitCursor objeto é declarado), o seu destrutor coloca o cursor no cursor anterior. Ou seja, o objeto realiza automaticamente a limpeza necessária.

Observação

Devido ao funcionamento dos seus construtores e destruidores, CWaitCursor os objetos são sempre declarados como variáveis locais — nunca são declarados como variáveis globais nem são alocados com new.

Se realizar uma operação que possa alterar o cursor, como mostrar uma caixa de mensagens ou uma caixa de diálogo, chame a função Restaurar membro para restaurar o cursor de espera. É aceitável ligar Restore mesmo quando um cursor de espera está atualmente exibido.

Outra forma de mostrar um cursor de espera é usar a combinação de CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor, e talvez CCmdTarget::RestoreWaitCursor. No entanto, CWaitCursor é mais fácil de usar porque não precisas de definir o cursor para o cursor anterior quando terminares a operação longa.

Observação

O MFC define e restaura o cursor usando a função virtual CWinApp::D oWaitCursor . Pode sobrescrever esta função para fornecer um comportamento personalizado.

Hierarquia de herança

CWaitCursor

Requerimentos

Cabeçalho: afxwin.h

Example

BOOL SomeLengthyProcess()
{
   CWaitCursor wait;
   //Do the lengthy processing.
   Sleep(1000);

   AfxMessageBox(_T("Some result")); //This changes the cursor.
   wait.Restore();                   //Restore the Wait cursor.
   //Continue Processing.
   Sleep(1000);

   //The destructor changes the cursor back to Regular cursor.
   return TRUE;
}

CWaitCursor::CWaitCursor

Para mostrar um cursor de espera, basta declarar um CWaitCursor objeto antes do código que realiza a operação longa.

CWaitCursor();

Observações

O construtor faz automaticamente com que o cursor de espera seja exibido.

Quando o objeto sai do âmbito (no final do bloco em que o CWaitCursor objeto é declarado), o seu destrutor coloca o cursor no cursor anterior. Ou seja, o objeto realiza automaticamente a limpeza necessária.

Podes aproveitar o facto de o destruidor ser chamado no final do bloco (que pode ser antes do fim da função) para tornar o cursor de espera ativo apenas numa parte da tua função. Esta técnica é mostrada no segundo exemplo abaixo.

Observação

Devido ao funcionamento dos seus construtores e destruidores, CWaitCursor os objetos são sempre declarados como variáveis locais — nunca são declarados como variáveis globais, nem são atribuídos a new.

Example

// The following example illustrates the most common case
// of displaying the wait cursor during some lengthy
// processing.
void LengthyFunction()
{
   // perhaps you display a dialog box before displaying a
   // wait cursor

   CWaitCursor wait; // display wait cursor

   // do some lengthy processing
   Sleep(1000);

} // destructor automatically removes the wait cursor

// This example shows using a CWaitCursor object inside a block
// so the wait cursor is displayed only while the program is
// performing a lengthy operation.
void ConditionalFunction()
{
   if (SomeCondition)
   {
      CWaitCursor wait; // display wait cursor in this block only

      // do some lengthy processing
      Sleep(1000);

   } // at this point, the destructor removes the wait cursor
   else
   {
      // no wait cursor--only quick processing
   }
}

CWaitCursor::Restaurar

Para restaurar o cursor de espera, chame esta função após realizar uma operação, como mostrar uma caixa de mensagens ou caixa de diálogo, o que pode alterar o cursor de espera para outro cursor.

void Restore();

Observações

É aceitável ligar Restore mesmo quando o cursor de espera está atualmente apresentado.

Se precisares de restaurar o cursor de espera enquanto estás numa função diferente daquela em que o CWaitCursor objeto está declarado, podes chamar o CCmdTarget::RestoreWaitCursor.

Example

// This example illustrates performing an operation
// which changes the wait cursor. You should call
// CWaitCursor::Restore to restore the wait
// cursor after an operation which changes the cursor.
void AnotherLengthyFunction()
{
   CWaitCursor wait; // display wait cursor

   // do some lengthy processing
   Sleep(1000);

   // The dialog box will normally change the cursor to
   // the standard arrow cursor.
   CFileDialog dlg(TRUE);
   dlg.DoModal();

   // It is necessary to call Restore here in order
   // to change the cursor back to the wait cursor.
   wait.Restore();

   // do some more lengthy processing
   Sleep(1000);

   // destructor automatically removes the wait cursor
}

// If the wait cursor is changed by a function called by
// the function which created the wait cursor, you
// can call CCmdTarget::RestoreWaitCursor to restore
// the wait cursor.
void CalledFunction()
{
   CFileDialog dlg(TRUE);
   dlg.DoModal();

   // Since CWinApp is derived from CCmdTarget, we can use a
   // pointer to our application object to make the call to
   // CCmdTarget::RestoreWaitCursor.
   AfxGetApp()->RestoreWaitCursor();

   // Yet more lengthy processing...
   Sleep(1000);
}

Consulte também

Gráfico de Hierarquia
CCmdTarget::BeginWaitCursor
CCmdTarget::EndWaitCursor
CCmdTarget::RestoreWaitCursor
CWinApp::D oWaitCursor
Altere o ponteiro do rato para uma janela no MFC usando Visual C++