LPTEXTOUTPROC
Quando o usuário executa uma operação de controle de origem de dentro do ambiente de desenvolvimento integrado (IDE), o plug-in de controle de origem talvez queira transmitir mensagens de status ou de erro relacionadas à operação. O plug-in pode exibir suas próprias caixas de mensagem para essa finalidade. No entanto, para obter mais perfeita integração, o plug-in pode transmitir seqüências para o IDE, que exibe em sua forma nativa de exibir informações de status. O mecanismo para isso é o LPTEXTOUTPROC ponteiro de função. O IDE implementa essa função (descrita em mais detalhes abaixo) para exibir o status e erros.
O IDE passa para o controle de origem plug-in um ponteiro de função para essa função, como o lpTextOutProc parâmetro, ao chamar o Função SccOpenProject. Durante uma operação de SCC, por exemplo, no meio de uma chamada para o Função SccGet envolvendo muitos arquivos, o plug-in pode chamar o LPTEXTOUTPROC função, periodicamente, passando para exibir seqüências de caracteres. O IDE pode exibir essas cadeias de caracteres em uma barra de status em uma janela de saída, ou em uma caixa de mensagem separada, conforme apropriado. Opcionalmente, o IDE pode ser capaz de exibir determinadas mensagens com um Cancelar botão. Isso permite que o usuário cancele a operação e fornece a capacidade de passar essas informações para o plug-in a IDE.
Assinatura
O IDE saída de função tem a seguinte assinatura:
typedef LONG (*LPTEXTOUTPROC) (
LPSTR display_string,
LONG mesg_type
);
Parâmetros
display_string
Uma seqüência de texto para exibir. Essa seqüência de caracteres não deve ser finalizada com um carro de retorno ou alimentação de linha.mesg_type
O tipo de mensagem. A tabela a seguir lista os valores com suporte para esse parâmetro.Valor
Descrição
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR
A mensagem será considerada informações, aviso ou erro.
SCC_MSG_STATUS
A mensagem mostra o status e pode ser exibida na barra de status.
SCC_MSG_DOCANCEL
Enviado com nenhuma seqüência de mensagem.
SCC_MSG_STARTCANCEL
Começa exibindo um Cancelar botão.
SCC_MSG_STOPCANCEL
Interrompe a exibição de um Cancelar botão.
SCC_MSG_BACKGROUND_IS_CANCELLED
Solicita que o IDE se a operação de plano de fundo deve ser cancelada: IDE retorna SCC_MSG_RTN_CANCEL se a operação foi cancelada; Caso contrário, retornará SCC_MSG_RTN_OK. O display_string é um parâmetro de conversão como um SccMsgDataIsCancelled estrutura, que é fornecida pelo plug-in de controle de origem.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE
Informa o IDE sobre um arquivo antes de serem recuperado do controle de versão. O display_string é um parâmetro de conversão como um SccMsgDataOnBeforeGetFile estrutura, que é fornecida pelo plug-in de controle de origem.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE
Informa o IDE sobre um arquivo depois que tiver sido recuperado do controle de versão. O display_string é um parâmetro de conversão como um SccMsgDataOnAfterGetFile estrutura, que é fornecida pelo plug-in de controle de origem.
SCC_MSG_BACKGROUND_ON_MESSAGE
Informa o IDE do status atual de uma operação de plano de fundo. O display_string é um parâmetro de conversão como um SccMsgDataOnMessage estrutura, que é fornecida pelo plug-in de controle de origem.
Valor de retorno
Valor |
Descrição |
---|---|
SCC_MSG_RTN_OK |
A seqüência de caracteres foi exibida ou se a operação foi concluída com êxito. |
SCC_MSG_RTN_CANCEL |
O usuário deseja cancelar a operação. |
Exemplo
Suponha que as chamadas do IDE a Função SccGet com vinte nomes de arquivo. O plug-in de controle de origem deseja impedir que a operação no meio de um arquivo, obtenha o cancelamento. Depois de obter cada arquivo, ele chama lpTextOutProc, passando as informações de status em cada arquivo e envia um SCC_MSG_DOCANCEL mensagem caso ela tenha nenhum status ao relatório. Se a qualquer momento o plug-in recebe um valor de retorno de SCC_MSG_RTN_CANCEL partir do IDE, ele cancela a operação get imediatamente, para que não há mais arquivos são recuperados.
Estruturas
SccMsgDataIsCancelled
typedef struct {
DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;
Essa estrutura é enviada com o SCC_MSG_BACKGROUND_IS_CANCELLED mensagem. Ele é usado para comunicar-se a identificação da operação em segundo plano que foi cancelada.
SccMsgDataOnBeforeGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
} SccMsgDataOnBeforeGetFile;
Essa estrutura é enviada com o SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE mensagem. Ele é usado para comunicar-se o nome do arquivo prestes a ser recuperado e a identificação da operação em segundo plano que está fazendo a recuperação.
SccMsgDataOnAfterGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
SCCRTN sResult;
} SccMsgDataOnAfterGetFile;
Essa estrutura é enviada com o SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE mensagem. Ele é usado para comunicar o resultado de recuperar o arquivo especificado, como também a identificação da operação de plano de fundo que faziam à recuperação. Consulte os valores de retorno para o Função SccGet para o que pode ser dado como resultado.
SccMsgDataOnMessage
[C++]
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szMessage;
BOOL bIsError;
} SccMsgDataOnMessage;
Essa estrutura é enviada com o SCC_MSG_BACKGROUND_ON_MESSAGE mensagem. Ele é usado para comunicar o status atual de uma operação de plano de fundo. O status é expresso como uma seqüência de caracteres a ser exibido pelo IDE, e bIsError indica a gravidade da mensagem (TRUE para uma mensagem de erro; FALSEpara um aviso ou mensagem informativa). A identificação da operação de plano de fundo, enviando o status também recebe.
Exemplo de código
Aqui está um exemplo breve de chamada LPTEXTOUTPROC para enviar o SCC_MSG_BACKGROUND_ON_MESSAGE mensagem, mostrando como converter a estrutura para a chamada.
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;
}