Freigeben über


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.

Wert Beschreibung
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR Die Nachricht wird als Informationen, Warnung oder Fehler betrachtet.
SCC_MSG_STATUS Die Meldung zeigt den Status an und kann in der Statusleiste angezeigt werden.
SCC_MSG_DOCANCEL Wird ohne Nachrichtenzeichenfolge gesendet.
SCC_MSG_STARTCANCEL Beginnt mit der Anzeige einer Schaltfläche "Abbrechen ".
SCC_MSG_STOPCANCEL Beendet die Anzeige einer Schaltfläche "Abbrechen ".
SCC_MSG_BACKGROUND_IS_CANCELLED Fragt die IDE, ob der Hintergrundvorgang abgebrochen werden soll: IDE gibt zurück SCC_MSG_RTN_CANCEL , ob der Vorgang abgebrochen wurde; andernfalls wird zurückgegeben SCC_MSG_RTN_OK. Der display_string Parameter wird als SccMsgDataIsCancelled-Struktur umgewandelt, die vom Quellcodeverwaltungs-Plug-In bereitgestellt wird.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE Teilt der IDE eine Datei mit, bevor sie aus der Versionssteuerung abgerufen wird. Der display_string Parameter wird als SccMsgDataOnBeforeGetFile-Struktur umgeschrieben, die vom Quellcodeverwaltungs-Plug-In bereitgestellt wird.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE Teilt der IDE eine Datei mit, nachdem sie aus der Versionssteuerung abgerufen wurde. Der display_string Parameter wird als SccMsgDataOnAfterGetFile-Struktur übergeben, die vom Quellcodeverwaltungs-Plug-In bereitgestellt wird.
SCC_MSG_BACKGROUND_ON_MESSAGE Teilt der IDE den aktuellen Status eines Hintergrundvorgangs mit. Der display_string Parameter wird als SccMsgDataOnMessage-Struktur umgeschrieben, die vom Quellcodeverwaltungs-Plug-In bereitgestellt wird.

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;
}

Siehe auch