LPTEXTOUTPROC
Wenn der Benutzer einen Quellcodeverwaltungsvorgang aus der integrierten Entwicklungsumgebung (IDE) ausführt, kann das Quellcodeverwaltungs-Plug-In Fehler- oder Statusmeldungen im Zusammenhang mit dem Vorgang übermitteln. Das Plug-In kann hierfür eigene Meldungsfelder anzeigen. Für eine nahtlosere Integration kann das Plug-In jedoch Zeichenfolgen an die IDE übergeben, die diese dann auf der nativen Art der Anzeige von Statusinformationen anzeigt. Der Mechanismus dafür ist der LPTEXTOUTPROC
Funktionszeiger. Die IDE implementiert diese Funktion (weiter unten beschrieben), um Fehler und Status anzuzeigen.
Die IDE übergibt beim Aufrufen des SccOpenProject an das Quellcodeverwaltungs-Plug-In einen Funktionszeiger auf diese Funktion als lpTextOutProc
Parameter. Während eines SCC-Vorgangs, z. B. in der Mitte eines Aufrufs des SccGet mit vielen Dateien, kann das Plug-In die LPTEXTOUTPROC
Funktion aufrufen, wobei Zeichenfolgen in regelmäßigen Abständen übergeben werden, die angezeigt werden sollen. Die IDE zeigt diese Zeichenfolgen ggf. auf einer Statusleiste, in einem Ausgabefenster oder in einem separaten Meldungsfeld an. Optional kann die IDE bestimmte Meldungen mit einer Schaltfläche "Abbrechen " anzeigen. Dadurch kann der Benutzer den Vorgang abbrechen und der IDE die Möglichkeit geben, diese Informationen an das Plug-In zurückzugeben.
Signature
Die Ausgabefunktion der IDE weist die folgende Signatur auf:
typedef LONG (*LPTEXTOUTPROC) (
LPSTR display_string,
LONG mesg_type
);
Parameter
display_string
Eine anzuzeigende Textzeichenfolge. Diese Zeichenfolge sollte nicht mit einem Wagenrücklauf oder einem Zeilenvorschub beendet werden.
mesg_type
Der Typ der Meldung. In der folgenden Tabelle sind die unterstützten Werte für diesen Parameter aufgeführt.
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
Angenommen, die IDE ruft das SccGet mit zwanzig Dateinamen auf. Das Quellcodeverwaltungs-Plug-In möchte verhindern, dass der Vorgang in der Mitte einer Datei abgerufen wird. Nachdem jede Datei abgerufen wurde, wird sie aufgerufen lpTextOutProc
, übergeben sie die Statusinformationen für jede Datei und sendet eine SCC_MSG_DOCANCEL
Nachricht, wenn sie keinen Status zum Melden hat. Wenn das Plug-In jederzeit einen Rückgabewert von SCC_MSG_RTN_CANCEL
der IDE empfängt, wird der Abrufvorgang sofort abgebrochen, 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 abgebrochenen Hintergrundvorgangs zu kommunizieren.
SccMsgDataOnBeforeGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
} SccMsgDataOnBeforeGetFile;
Diese Struktur wird mit der SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE
Nachricht gesendet. Sie wird verwendet, um den Namen der abzurufenden Datei und die ID des Hintergrundvorgangs zu kommunizieren, der den Abruf durchführt.
SccMsgDataOnAfterGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
SCCRTN sResult;
} SccMsgDataOnAfterGetFile;
Diese Struktur wird mit der SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE
Nachricht gesendet. Es wird verwendet, um das Ergebnis des Abrufens der angegebenen Datei sowie die ID des Hintergrundvorgangs zu kommunizieren, der den Abruf ausgeführt hat. Sehen Sie sich die Rückgabewerte für das SccGet an, was als Ergebnis angegeben werden kann.
SccMsgDataOnMessage
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 kommunizieren. Der Status wird als Zeichenfolge ausgedrückt, die von der IDE angezeigt werden soll, und bIsError
gibt den Schweregrad der Nachricht an (TRUE
für eine Fehlermeldung; FALSE
für eine Warnung oder für eine Informationsmeldung). Die ID des Hintergrundvorgangs, der den Status sendet, wird ebenfalls angegeben.
Code-Beispiel
Hier ist ein kurzes Beispiel für das Senden LPTEXTOUTPROC
der SCC_MSG_BACKGROUND_ON_MESSAGE
Nachricht, das zeigt, wie die Struktur für den Anruf umzustrukturiert 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;
}