Condividi tramite


LPTEXTOUTPROC

Quando l'utente esegue un'operazione di controllo del codice sorgente dall'interno dell'ambiente di sviluppo integrato (IDE), il plug-in del controllo del codice sorgente potrebbe voler trasmettere messaggi di errore o di stato relativi all'operazione. Il plug-in può visualizzare le proprie finestre di messaggio a questo scopo. Tuttavia, per un'integrazione più semplice, il plug-in può passare stringhe all'IDE, che quindi li visualizza nel modo nativo di visualizzare le informazioni sullo stato. Il meccanismo per questo è il puntatore a LPTEXTOUTPROC funzione. L'IDE implementa questa funzione (descritta in modo più dettagliato di seguito) per la visualizzazione di errori e stato.

L'IDE passa al plug-in del controllo del codice sorgente un puntatore di funzione a questa funzione, come lpTextOutProc parametro, quando si chiama SccOpenProject. Durante un'operazione SCC, ad esempio, al centro di una chiamata a SccGet che coinvolge molti file, il plug-in può chiamare la LPTEXTOUTPROC funzione, passando periodicamente stringhe da visualizzare. L'IDE può visualizzare queste stringhe su una barra di stato, in una finestra di output o in una finestra di messaggio separata, in base alle esigenze. Facoltativamente, l'IDE potrebbe essere in grado di visualizzare determinati messaggi con un pulsante Annulla . In questo modo l'utente può annullare l'operazione e offre all'IDE la possibilità di passare di nuovo queste informazioni al plug-in.

Firma

La funzione di output dell'IDE ha la firma seguente:

typedef LONG (*LPTEXTOUTPROC) (
   LPSTR display_string,
   LONG mesg_type
);

Parametri

display_string

Stringa di testo da visualizzare. Questa stringa non deve essere terminata con un ritorno a capo o un avanzamento riga.

mesg_type

Tipo di messaggio. Nella tabella seguente sono elencati i valori supportati per questo parametro.

Valore Descrizione
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR Il messaggio è considerato informazioni, avviso o errore.
SCC_MSG_STATUS Il messaggio mostra lo stato e può essere visualizzato nella barra di stato.
SCC_MSG_DOCANCEL Inviato senza stringa di messaggio.
SCC_MSG_STARTCANCEL Inizia a visualizzare un pulsante Annulla .
SCC_MSG_STOPCANCEL Arresta la visualizzazione di un pulsante Annulla .
SCC_MSG_BACKGROUND_IS_CANCELLED Chiede all'IDE se l'operazione in background deve essere annullata: l'IDE restituisce SCC_MSG_RTN_CANCEL se l'operazione è stata annullata; in caso contrario, restituisce SCC_MSG_RTN_OK. Il display_string parametro viene sottoposto a cast come struttura SccMsgDataIsCancelled , fornita dal plug-in del controllo del codice sorgente.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE Indica all'IDE un file prima che venga recuperato dal controllo della versione. Il display_string parametro viene eseguito il cast come struttura SccMsgDataOnBeforeGetFile , fornito dal plug-in del controllo del codice sorgente.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE Indica all'IDE un file dopo che è stato recuperato dal controllo della versione. Il display_string parametro viene eseguito il cast come struttura SccMsgDataOnAfterGetFile , fornito dal plug-in del controllo del codice sorgente.
SCC_MSG_BACKGROUND_ON_MESSAGE Indica all'IDE lo stato corrente di un'operazione in background. Il display_string parametro viene eseguito come struttura SccMsgDataOnMessage , fornito dal plug-in del controllo del codice sorgente.

Valore restituito

Valore Descrizione
SCC_MSG_RTN_OK La stringa è stata visualizzata o l'operazione è stata completata correttamente.
SCC_MSG_RTN_CANCEL L'utente vuole annullare l'operazione.

Esempio

Si supponga che l'IDE chiami SccGet con venti nomi di file. Il plug-in del controllo del codice sorgente vuole impedire l'annullamento dell'operazione al centro di un recupero di file. Dopo aver ottenuto ogni file, chiama lpTextOutProc, passando le informazioni sullo stato in ogni file e invia un SCC_MSG_DOCANCEL messaggio se non ha stato da segnalare. Se in qualsiasi momento il plug-in riceve un valore restituito dell'IDE SCC_MSG_RTN_CANCEL , annulla immediatamente l'operazione get, in modo che non vengano recuperati altri file.

Strutture

SccMsgDataIsCancelled

typedef struct {
   DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;

Questa struttura viene inviata con il SCC_MSG_BACKGROUND_IS_CANCELLED messaggio. Viene usato per comunicare l'ID dell'operazione in background annullata.

SccMsgDataOnBeforeGetFile

typedef struct {
   DWORD dwBackgroundOperationID;
   PCSTR szFile;
} SccMsgDataOnBeforeGetFile;

Questa struttura viene inviata con il SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE messaggio. Viene usato per comunicare il nome del file che sta per essere recuperato e l'ID dell'operazione in background che esegue il recupero.

SccMsgDataOnAfterGetFile

typedef struct {
   DWORD dwBackgroundOperationID;
   PCSTR szFile;
   SCCRTN sResult;
} SccMsgDataOnAfterGetFile;

Questa struttura viene inviata con il SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE messaggio. Viene usato per comunicare il risultato del recupero del file specificato e dell'ID dell'operazione in background che ha eseguito il recupero. Vedere i valori restituiti per SccGet per gli elementi che possono essere forniti di conseguenza.

SccMsgDataOnMessage

typedef struct {
   DWORD dwBackgroundOperationID;
   PCSTR szMessage;
   BOOL bIsError;
} SccMsgDataOnMessage;

Questa struttura viene inviata con il SCC_MSG_BACKGROUND_ON_MESSAGE messaggio. Viene usato per comunicare lo stato corrente di un'operazione in background. Lo stato viene espresso come stringa da visualizzare dall'IDE e bIsError indica la gravità del messaggio (TRUE per un messaggio di errore; FALSE per un avviso o per un messaggio informativo). Viene inoltre assegnato l'ID dell'operazione in background che invia lo stato.

Esempio di codice

Di seguito è riportato un breve esempio di chiamata LPTEXTOUTPROC per inviare il SCC_MSG_BACKGROUND_ON_MESSAGE messaggio, che illustra come eseguire il cast della struttura per la chiamata.

LONG SendStatusMessage(
    LPTEXTOUTPROC pTextOutProc,
    DWORD         dwBackgroundID,
    LPCTSTR       pStatusMsg,
    BOOL          bIsError)
{
    SccMsgDataOnMessage msgData = { 0 };
    LONG                result  = 0;

    msgData.dwBackgroundOperationID = dwBackgroundID;
    msgData.szMessage               = pStatusMsg;
    msgData.bIsError                = bIsError;

    result = pTextOutProc(reinterpret_cast<LPCTSTR>(&msgData), SCC_MSG_BACKGROUND_ON_MESSAGE);
    return result;
}

Vedi anche