LPTEXTOUTPROC
Wenn der Benutzer einen Quellcodeverwaltungsvorgang aus der integrierten Entwicklungsumgebung (IDE) ausgeführt wird, sollte das Quellcodeverwaltungs-Plug-In Fehler oder Statusmeldungen in Bezug auf den Vorgang übergeben. Das Plug-In kann seine eigenen Meldungsfelder angezeigt werden. Zu diesem Zweck Für nahtlosere Integration, kann das Plug-In Zeichenfolgen in der IDE übergeben, das sie dann auf seine systemeigene Möglichkeit zum Anzeigen von Statusinformationen enthält. Der Mechanismus für dies ist derLPTEXTOUTPROC-Funktionszeiger. Die IDE implementiert diese Funktion (ausführlich im Folgenden beschrieben) zum Anzeigen des Fehlers und des Status.
Die IDE führt das Quellcodeverwaltungs-Plug-In einen Funktionszeiger zu dieser Funktion, z. B. der lpTextOutProc-Parameter, wenn es SccOpenProject-Funktionaufruft. Während eines SCC-Vorgangs z. B. mitten in einem Aufruf von SccGet-Funktion , das viele Dateien enthält, kann das Plug-In die LPTEXTOUTPROC-Funktion aufrufen und Zeichenfolgen zur Anzeige in regelmäßigen Abständen übergeben. Die IDE kann diese Zeichenfolgen in einer Statusleiste in einem Fenster Ausgabe oder in einem separaten, Meldungsfeld an. Optional kann die IDE in der Lage, bestimmte Meldungen mit einer Abbrechen Schaltfläche anzuzeigen. Dadurch kann der Benutzer den Vorgang abgebrochen, und es gibt der IDE die Möglichkeit, diese Informationen an den Plug-Ins zu übergeben.
Signatur
Die Ausgabefunktion der IDE hat folgende Signatur:
typedef LONG (*LPTEXTOUTPROC) (
LPSTR display_string,
LONG mesg_type
);
Parameter
display_string
Eine anzuzeigende Textzeichenfolge. Diese Zeichenfolge sollte nicht mit einem Wagenrücklauf oder Zeilenvorschub nicht mehr benötigt wird.mesg_type
Der Typ der Meldung. In der folgenden Tabelle sind die unterstützten Werte für diesen Parameter auf.Wert
Beschreibung
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR
Die Nachricht gilt als Fehler, Warnung oder Information.
SCC_MSG_STATUS
Die Meldung wird Status an und kann in der Statusleiste angezeigt werden.
SCC_MSG_DOCANCEL
Gesendet ohne Meldungszeichenfolge.
SCC_MSG_STARTCANCEL
Startet eine Abbrechen Schaltfläche angezeigt wird.
SCC_MSG_STOPCANCEL
Beendet die eine Abbrechen Schaltfläche anzuzeigen.
SCC_MSG_BACKGROUND_IS_CANCELLED
Fordert IDE, wenn der Hintergrundvorgang abgebrochen werden soll: IDE gibt SCC_MSG_RTN_CANCEL zurück, wenn der Vorgang abgebrochen wurde. andernfalls gibt SCC_MSG_RTN_OKzurück. Der display_string-Parameter wird als SccMsgDataIsCancelled Struktur umgewandelt, die durch das Quellcodeverwaltungs-Plug-In angeben.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE
Bezieht sich auf die IDE zu einer Datei, bevor sie aus der Versionskontrolle abgerufen wird. Der display_string-Parameter wird als SccMsgDataOnBeforeGetFile Struktur umgewandelt, die durch das Quellcodeverwaltungs-Plug-In angeben.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE
Bezieht sich auf die IDE zu einer Datei, nachdem sie aus der Versionskontrolle abgerufen wurde. Der display_string-Parameter wird als SccMsgDataOnAfterGetFile Struktur umgewandelt, die durch das Quellcodeverwaltungs-Plug-In angeben.
SCC_MSG_BACKGROUND_ON_MESSAGE
Teilt die IDE des aktuellen Status eines Hintergrundvorgangs an. Der display_string-Parameter wird als SccMsgDataOnMessage Struktur umgewandelt, die durch das Quellcodeverwaltungs-Plug-In angeben.
Rückgabewert
Wert |
Beschreibung |
---|---|
SCC_MSG_RTN_OK |
Die Zeichenfolge wurde angezeigt, oder der Vorgang wurde erfolgreich abgeschlossen. |
SCC_MSG_RTN_CANCEL |
Der Benutzer möchte den Vorgang abbrechen. |
Beispiel
Nehmen Sie die IDE-Aufrufe mit SccGet-Funktion zwanzig Dateinamen an. Das Quellcodeverwaltungs-Plug-In verhindern möchte den Abbruch des Vorgangs in der Mitte einer Datei abrufen. Nach dem Erstellen einer Datei abgerufen hat, ruft es lpTextOutProcauf und übergibt sie die Statusinformationen über jede Datei, und sendet eine SCC_MSG_DOCANCEL Meldung, wenn kein Status aufweist, Report. Wenn jedoch jederzeit das Plug-In einen Rückgabewert von SCC_MSG_RTN_CANCEL über die IDE empfängt, bricht er den GET-Vorgang sofort ab, sodass keine weiteren Dateien abgerufen werden.
Strukturen
SccMsgDataIsCancelled
typedef struct {
DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;
Diese Struktur wird mit der SCC_MSG_BACKGROUND_IS_CANCELLED Nachricht gesendet. Sie wird verwendet, um die ID des Hintergrundvorgangs mitzuteilen, der abgebrochen wurde.
SccMsgDataOnBeforeGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
} SccMsgDataOnBeforeGetFile;
Diese Struktur wird mit der SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE Nachricht gesendet. Es wird der Name der Datei, die abgerufen werden soll, und die ID des Hintergrundvorgangs etwa zu übermitteln, der das Abrufen der Fall ist.
SccMsgDataOnAfterGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
SCCRTN sResult;
} SccMsgDataOnAfterGetFile;
Diese Struktur wird mit der SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE Nachricht gesendet. Er wird verwendet, um das Ergebnis des Abrufens der angegebenen Datei anzuzeigen sowie die ID des Hintergrundvorgangs, der das Abrufen. Zeigen Sie die Rückgabewerte für SccGet-Funktion folglich angegeben, welche Aktion erfolgen kann.
SccMsgDataOnMessage
[C++]
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szMessage;
BOOL bIsError;
} SccMsgDataOnMessage;
Diese Struktur wird mit der SCC_MSG_BACKGROUND_ON_MESSAGE Nachricht gesendet. Es wird verwendet, um den aktuellen Status eines Hintergrundvorgangs zu übermitteln. Der Status wird angegeben, während eine von der IDE angezeigt werden soll bIsError Zeichenfolge und den Schweregrad der Meldung angibt (TRUE für eine Fehlermeldung. FALSE für eine Warnung oder Informationsmeldung). Die ID des Hintergrundvorgangs, der den Status sendet, ist ebenfalls angegeben.
Codebeispiel
Im Folgenden ein kurzes Beispiel für den Aufruf von LPTEXTOUTPROCSCC_MSG_BACKGROUND_ON_MESSAGE , um die Nachricht zu senden und veranschaulicht wird, wie die Struktur für den Aufruf umgewandelt wird.
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;
}