SccOpenProject 函式

此函式會開啟現有的原始檔控制專案,或建立新的原始檔控制專案。

語法

SCCRTN SccOpenProject (
   LPVOID        pvContext,
   HWND          hWnd,
   LPSTR         lpUser,
   LPCSTR        lpProjName,
   LPCSTR        lpLocalProjPath,
   LPSTR         lpAuxProjPath,
   LPCSTR        lpComment,
   LPTEXTOUTPROC lpTextOutProc,
   LONG          dwFlags
);

參數

pvContext

[in]原始檔控制外掛程式內容結構。

hWnd

[in]原始檔控制外掛程式可作為其提供之任何對話框之父代的 IDE 視窗句柄。

lpUser

[in, out]用戶的名稱(不可超過SCC_USER_SIZE,包括 NULL 終止符)。

lpProjName

[in]識別項目名稱的字串。

lpLocalProjPath

[in]專案工作資料夾的路徑。

lpAuxProjPath

[in, out]選擇性的輔助字串,可識別專案(不要超過SCC_AUXPATH_SIZE,包括 NULL 終止符)。

lpComment

[in]正在建立之新專案的批注。

lpTextOutProc

[in]選擇性回呼函式,可顯示原始檔控制外掛程式的文字輸出。

dwFlags

[in]指出如果原始檔控制外掛程式未知專案,是否需要建立新的專案。 值可以是 和的組合SCC_OP_CREATEIFNEWSCC_OP_SILENTOPEN.

傳回值

此函式的原始檔控制外掛程式實作應該會傳回下列其中一個值:

Description
SCC_OK 成功開啟專案。
SCC_E_INITIALIZEFAILED 無法初始化 Project。
SCC_E_INVALIDUSER 用戶無法登入原始檔控制系統。
SCC_E_COULDNOTCREATEPROJECT 在呼叫之前,專案不存在;旗 SCC_OPT_CREATEIFNEW 標已設定,但無法建立專案。
SCC_E_PROJSYNTAXERR 無效的專案語法。
SCC_E_UNKNOWNPROJECT 原始檔控制外掛程式不知道專案,而且 SCC_OPT_CREATEIFNEW 未設定旗標。
SCC_E_INVALIDFILEPATH 無效或無法使用的檔案路徑。
SCC_E_NOTAUTHORIZED 不允許使用者執行這項作業。
SCC_E_ACCESSFAILURE 存取原始檔控制系統時發生問題,可能是因為網路或爭用問題。 建議重試。
SCC_E_NONSPECFICERROR 非特定失敗;原始檔控制系統未初始化。

備註

IDE 可能會傳入使用者名稱 (lpUser),或者它可能只是傳入空字串的指標。 如果有使用者名稱,原始檔控制外掛程式應該使用它做為預設值。 不過,如果未傳遞名稱,或登入失敗且具有指定名稱,外掛程式應該提示使用者登入,並在收到有效登入.時傳回有效的名稱lpUser,因為外掛程式可能會變更用戶名稱字串,IDE 一律會配置大小緩衝區 (SCC_USER_LEN+1 或 SCC_USER_SIZE, 包含 Null 終止符的空間。

注意

IDE 可能需要執行的第一個動作可能是對函式或 SccGetProjPath呼叫SccOpenProject。 因此,兩者都有相同的 lpUser 參數。

lpAuxProjPathlpProjName 會從方案檔讀取,或是從函式的呼叫 SccGetProjPath 傳回。 這些參數包含原始檔控制外掛程式與專案相關聯的字串,而且只對外掛程式有意義。 如果方案檔中沒有這類字串,且使用者尚未收到流覽的提示(這會透過 SccGetProjPath 函式傳回字串),IDE 會同時傳遞 和lpProjName的空字串lpAuxProjPath,而且預期當此函式傳回時,外掛程式會更新這些值。

lpTextOutProc 是 IDE 提供給原始檔控制外掛程式的回呼函式指標,用於顯示命令結果輸出。 此回呼函式會在 LPTEXTOUTPROC詳細說明。

注意

如果原始檔控制外掛程式想要利用這項功能,它必須在 SccInitialize設定SCC_CAP_TEXTOUT旗標。 如果未設定該旗標,或 IDE 不支援這項功能, lpTextOutProc 則為 NULL

參數 dwFlags 會控制開啟專案目前不存在時的結果。 包含兩個位旗標與 SCC_OP_CREATEIFNEWSCC_OP_SILENTOPEN。 如果開啟的項目已經存在,函式只會開啟項目並傳 SCC_OK回 。 如果專案不存在且 SCC_OP_CREATEIFNEW 旗標開啟,原始檔控制外掛程式可以在原始檔控制系統中建立專案、開啟專案,並傳回 SCC_OK。 如果專案不存在,而且 SCC_OP_CREATEIFNEW 旗標已關閉,則外掛程式應該檢查 SCC_OP_SILENTOPEN 旗標。 如果該旗標未開啟,外掛程式可能會提示使用者輸入項目名稱。 如果旗標開啟,外掛程式應該只會傳回 SCC_E_UNKNOWNPROJECT

呼叫順序

在一般事件過程中, 會先呼叫 SccInitialize 來開啟原始檔控制會話。 會話可能包含 對SccOpenProject的呼叫,後面接著其他原始檔控制外掛程式 API 函式呼叫,而且會終止對 SccCloseProject呼叫。 呼叫 SccUninitialize 之前,可能會重複多次這類會話。

如果原始檔控制外掛程式設定 SCC_CAP_REENTRANT 中的 SccInitialize位,則上述會話序列可能會平行重複多次。 不同的 pvContext 結構會追蹤不同的會話,其中每個會話一 pvContext 次都會與一個開啟的專案相關聯。 根據pvContext 參數,外掛程式可以判斷任何特定呼叫中參考的專案。 如果未設定功能位 SCC_CAP_REENTRANT ,則非即時原始檔控制外掛程式會受限於其使用多個專案的能力。

注意

SCC_CAP_REENTRANT 是在原始檔控制外掛程式 API 1.1 版中引進的。 它未在 1.0 版中設定或被忽略,且所有 1.0 版原始檔控制外掛程式都假設為非實際執行狀態。

另請參閱