LPTEXTOUTPROC
當使用者執行原始檔控制作業從整合式的開發環境 (IDE) 內時,原始檔控制外掛程式可能會想要傳遞至作業的相關的錯誤或狀態訊息。 外掛程式可供顯示它自己的訊息方塊。 不過,更多的緊密整合的外掛程式可以傳遞字串到 IDE 中,然後將它們會顯示在其原生方法來顯示狀態資訊。 這樣的機制是 LPTEXTOUTPROC函式指標。 IDE 會實作這個函式 (更多的詳細資訊下, 面所述) 來顯示錯誤和狀態。
IDE 傳送至原始檔控制外掛程式的函式指標,這個函式,作為lpTextOutProc參數,呼叫時SccOpenProject 函式。 SCC 操作時,例如,若要呼叫的SccGet 函式牽涉到多檔案,此外掛程式可以呼叫LPTEXTOUTPROC函式,會定期傳送 [要顯示的字串。 IDE 可能會在狀態列上,在 [輸出] 視窗中,或在個別的訊息方塊中,適當地顯示這些字串。 (選擇性) IDE 可能會顯示與特定訊息取消 ] 按鈕。 這可讓使用者取消作業,並可提供 IDE 會將這項資訊傳回給外掛程式的能力。
Signature
IDE 的輸出函數語法包含下列的簽章:
typedef LONG (*LPTEXTOUTPROC) (
LPSTR display_string,
LONG mesg_type
);
參數
display_string
若要顯示的文字字串。 這個字串不應該因傳回或換行符號。mesg_type
訊息的類型。 下表列出支援的值,這個參數。值
描述
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR
資訊、 警告或錯誤,則會被視為訊息。
SCC_MSG_STATUS
訊息會顯示狀態,且可以顯示在狀態列上。
SCC_MSG_DOCANCEL
傳送以無訊息的字串。
SCC_MSG_STARTCANCEL
開始顯示取消 ] 按鈕。
SCC_MSG_STOPCANCEL
停止顯示取消 ] 按鈕。
SCC_MSG_BACKGROUND_IS_CANCELLED
詢問是否要取消背景作業的 IDE: IDE 會傳回SCC_MSG_RTN_CANCEL若作業已取消; 否則,會傳回SCC_MSG_RTN_OK。 display_string參數轉換成 SccMsgDataIsCancelled 由原始檔控制外掛程式所提供的結構。
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE
從版本控制擷取它之前,檔案的相關說明 IDE。 display_string參數轉換成 SccMsgDataOnBeforeGetFile 由原始檔控制外掛程式所提供的結構。
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE
它已經從版本控制擷取之後,檔案的相關告知 IDE。 display_string參數轉換成 SccMsgDataOnAfterGetFile 由原始檔控制外掛程式所提供的結構。
SCC_MSG_BACKGROUND_ON_MESSAGE
通知背景作業的目前狀態的 IDE。 display_string參數轉換成 SccMsgDataOnMessage 由原始檔控制外掛程式所提供的結構。
傳回值
值 |
描述 |
---|---|
SCC_MSG_RTN_OK |
所顯示的字串,或已順利完成作業。 |
SCC_MSG_RTN_CANCEL |
使用者想要取消作業。 |
範例
假設 IDE 呼叫SccGet 函式與二十個檔名。 原始檔控制外掛程式會想要防止取消檔案取得的作業。 在取得每個檔案之後, 它會呼叫lpTextOutProc、 將傳遞給它的狀態資訊在每一個檔案,並傳送SCC_MSG_DOCANCEL訊息如果還沒有狀態報表。 如果在任何時候外掛程式接收的傳回值SCC_MSG_RTN_CANCEL從 IDE 中,它取消取得作業,以便不擷取任何檔案。
結構
SccMsgDataIsCancelled
typedef struct {
DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;
這個結構以傳送SCC_MSG_BACKGROUND_IS_CANCELLED訊息。 它用來通訊的背景作業已取消的 ID。
SccMsgDataOnBeforeGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
} SccMsgDataOnBeforeGetFile;
這個結構以傳送SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE訊息。 它用來傳達大約要擷取的檔案名稱,以及負責進行擷取背景作業的識別碼。
SccMsgDataOnAfterGetFile
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szFile;
SCCRTN sResult;
} SccMsgDataOnAfterGetFile;
這個結構以傳送SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE訊息。 它用來通訊的擷取指定的檔案,以及 ID 未擷取背景作業的結果。 傳回值,請參閱SccGet 函式的內容可接受結果。
SccMsgDataOnMessage
[C++]
typedef struct {
DWORD dwBackgroundOperationID;
PCSTR szMessage;
BOOL bIsError;
} SccMsgDataOnMessage;
這個結構以傳送SCC_MSG_BACKGROUND_ON_MESSAGE訊息。 它用來傳達背景作業的目前狀態。 做為字串,由 IDE] 中,顯示表示狀態和bIsError指出訊息的嚴重性 (TRUE的錯誤訊息。 FALSE警告或告知性訊息)。 也提供傳送狀態的背景作業的識別碼。
程式碼範例
下面是一個簡單的範例,呼叫的LPTEXTOUTPROC傳送SCC_MSG_BACKGROUND_ON_MESSAGE訊息,說明如何將結構轉換為撥號。
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;
}