Partilhar via


Método IVsQueryUndoUnit.ActionWouldBeAborted

Consulta a cada membro de um conjunto de desfazer vinculada para determinar se uma ação de desfazer seria anulada.

Namespace:  Microsoft.VisualStudio.TextManager.Interop
Assembly:  Microsoft.VisualStudio.TextManager.Interop.8.0 (em Microsoft.VisualStudio.TextManager.Interop.8.0.dll)

Sintaxe

'Declaração
Function ActionWouldBeAborted ( _
    <OutAttribute> ByRef pbWouldBeAborted As Integer _
) As Integer
int ActionWouldBeAborted(
    out int pbWouldBeAborted
)
int ActionWouldBeAborted(
    [OutAttribute] int% pbWouldBeAborted
)
abstract ActionWouldBeAborted : 
        pbWouldBeAborted:int byref -> int
function ActionWouldBeAborted(
    pbWouldBeAborted : int
) : int

Parâmetros

  • pbWouldBeAborted
    Tipo: Int32%

    [out] Se a ação de desfazer 1 (verdadeiro), seria anulada; Se a ação de desfazer (FALSO) 0 não seria anulada.

Valor de retorno

Tipo: Int32
Se o método for bem-sucedido, ele retorna S_OK.Se ele falhar, ele retorna um código de erro.

Comentários

Um conjunto de desfazer vinculado rastreia a mesma ação de desfazer em vários buffers.

Essa interface de consulta um conjunto de desfazer vinculado para permitir que cada membro do conjunto para determinar se uma ação de desfazer seria anulada.

Chame este método antes de tentar um desfazer vinculado para evitar ter de reverter vinculados a ações de desfazer.

Observações para implementadores

Implemente este método para o pai inicial de um conjunto de desfazer vinculado. Na implementação, consultar cada criança undo e chame ActionWouldBeAborted se o filho oferece suporte a IVsQueryUndoUnit.

Exemplos

Neste exemplo de C++, o pai pára de consultar se qualquer filho retorna true:

STDMETHODIMP
CParentUndoUnit::ActionWouldBeAborted
(
   BOOL *pbWouldBeAborted // [out] Would the action be aborted?
)
{
    HRESULT hr = S_OK;
    if ( pbWouldBeAborted == NULL )
    {
        hr = E_POINTER;
    }
    else
    {
        *pbWouldBeAborted = FALSE;
        // Loop over child units for edit actions
        CEditNode *pNode = m_pEditFirst;
        while (pNode && SUCCEEDED(hr))
        {
            if (pNode->m_pEditUnit)
            {
                CComQIPtr<IVsQueryUndoUnit, &IID_IVsQueryUndoUnit> srpQueryUndoUnitForUserAbort(pNode->m_pEditUnit);
                if ( srpQueryUndoUnitForUserAbort )
                {
                    hr = srpQueryUndoUnitForUserAbort->ActionWouldBeAborted(pbWouldBeAborted);
        // If any action would be aborted, stop looking
                    if ( SUCCEEDED(hr)  &&  *pbWouldBeAborted == TRUE )
                    {
                        break;
                    }
                }
            }
            pNode = pNode->m_pNext;
        }
    }
    return hr;
}

Segurança do .NET Framework

Consulte também

Referência

IVsQueryUndoUnit Interface

Namespace Microsoft.VisualStudio.TextManager.Interop

IVsLinkedUndoTransactionManager

Outros recursos

Como: usar o gerenciamento de desfazer vinculado