LPTEXTOUTPROC
Lorsque l'utilisateur effectue une opération de contrôle de code source à partir de l'environnement (IDE) de développement intégré (IDE), le plug-in contrôle de code source peut souhaiter acheminer des messages d'erreur ou d'état concernant l'opération. le plug-in peut afficher ses propres messages à cet effet. Toutefois, pour plus d'intégration transparente, le plug-in peut passer des chaînes à l'IDE, qui les affiche ensuite de sa méthode native pour afficher les informations d'état. Le mécanisme de ceci est le pointeur fonction d'LPTEXTOUTPROC . L'IDE implémente cette fonction (décrite plus en détail ci-dessous) pour afficher l'erreur et l'état.
L'IDE passe au plug-in contrôle de code source un pointeur fonction à cette fonction, comme le paramètre d' lpTextOutProc , en appelant SccOpenProject, fonction. Pendant une opération de SCC, par exemple, au milieu d'un appel à SccGet, fonction impliquant de nombreux fichiers, le plug-in peut appeler la fonction d' LPTEXTOUTPROC , en passant périodiquement des chaînes à afficher. L'IDE peut afficher ces chaînes dans une barre d'état, une fenêtre Sortie, ou dans une zone de message indépendant, selon le cas. Éventuellement, l'IDE peut être en mesure de consulter certains messages dont le bouton d' Annuler . Cela permet à l'utilisateur d'annuler l'opération, et donne à l'IDE la possibilité de passer ces informations sur le plug-in.
Signature
La fonction de sortie de l'IDE a la signature suivante :
typedef LONG (*LPTEXTOUTPROC) (
LPSTR display_string,
LONG mesg_type
);
Paramètres
display_string
Une chaîne de texte à afficher. Cette chaîne ne doit pas être terminée par un retour chariot ou un saut de ligne.mesg_type
Type de message. Le tableau suivant répertorie les valeurs prises en charge pour ce paramètre.Valeur
Description
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR
Le message est considéré des informations, avertissement, ni erreur.
SCC_MSG_STATUS
Le message affiche l'état et peut être affiché dans la barre d'état.
SCC_MSG_DOCANCEL
envoyé sans la chaîne de message.
SCC_MSG_STARTCANCEL
Commence affichage d'un bouton d' Annuler .
SCC_MSG_STOPCANCEL
cesse d'afficher un bouton d' Annuler .
SCC_MSG_BACKGROUND_IS_CANCELLED
Demande l'IDE si l'opération en arrière-plan doit être annulée : Retourne SCC_MSG_RTN_CANCEL IDE si l'opération a été annulée ; sinon, retourne SCC_MSG_RTN_OK. Le paramètre d' display_string est castée en tant que structure de SccMsgDataIsCancelled , qui est fournie par le plug-in contrôle de code source.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE
Indique l'IDE sur un fichier avant d'être extrait du contrôle de version. Le paramètre d' display_string est castée en tant que structure de SccMsgDataOnBeforeGetFile , qui est fournie par le plug-in contrôle de code source.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE
Indique l'IDE sur un fichier après qu'il a été récupéré du contrôle de version. Le paramètre d' display_string est castée en tant que structure de SccMsgDataOnAfterGetFile , qui est fournie par le plug-in contrôle de code source.
SCC_MSG_BACKGROUND_ON_MESSAGE
Indique l'IDE de l'état actuel d'une opération d'arrière-plan. Le paramètre d' display_string est castée en tant que structure de SccMsgDataOnMessage , qui est fournie par le plug-in contrôle de code source.
Valeur de retour
Valeur |
Description |
---|---|
SCC_MSG_RTN_OK |
La chaîne a été restituée ou l'opération a été effectuée correctement. |
SCC_MSG_RTN_CANCEL |
l'utilisateur souhaite annuler l'opération. |
Exemple
Supposez les appels de l'IDE SccGet, fonction avec vingt noms de fichiers. Le plug-in contrôle de code source souhaite empêcher annuler l'opération au milieu d'un get de fichier. Après l'obtention de chaque fichier, il appelle lpTextOutProc, en lui passant les informations d'état sur chaque fichier, et envoie un message d' SCC_MSG_DOCANCEL s'il n'a pas d'état à enregistrer. Si à tout moment le plug-in accepte une valeur de retour d' SCC_MSG_RTN_CANCEL de l'IDE, il annule l'opération d'extraction immédiatement, afin que des fichiers ne soient extraits.
Structures
SccMsgDataIsCancelled
typedef struct {
DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;
cette structure est envoyée avec le message d' SCC_MSG_BACKGROUND_IS_CANCELLED . Il est utilisé pour communiquer l'ID de l'opération en arrière-plan qui a été annulée.
SccMsgDataOnBeforeGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
} SccMsgDataOnBeforeGetFile;
cette structure est envoyée avec le message d' SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE . Elle est utilisée pour communiquer le nom du fichier à environ récupérer et de l'ID de l'opération en arrière-plan qui fait récupérer.
SccMsgDataOnAfterGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
SCCRTN sResult;
} SccMsgDataOnAfterGetFile;
cette structure est envoyée avec le message d' SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE . Elle est utilisée pour communiquer le résultat d'extraire le fichier spécifié ainsi que l'ID de l'opération en arrière-plan qui a fait récupérer. Consultez les valeurs de retour pour SccGet, fonction pour ce qui peut être fourni en conséquence.
SccMsgDataOnMessage
[C++]
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szMessage;
BOOL bIsError;
} SccMsgDataOnMessage;
cette structure est envoyée avec le message d' SCC_MSG_BACKGROUND_ON_MESSAGE . Elle est utilisée pour signaler l'état actuel d'une opération en arrière-plan. L'état est exprimé sous la forme d'une chaîne à afficher par l'IDE, et bIsError indique la gravité du message (TRUE pour un message d'erreur ; FALSE pour un avertissement ou un message d'information). L'ID de l'opération d'arrière-plan envoyant le rapport est également donné.
Exemple de code
Voici un bref exemple d'appel LPTEXTOUTPROC envoyer le message d' SCC_MSG_BACKGROUND_ON_MESSAGE , montrant comment effectuer un cast de la structure pour l'appel.
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;
}