Funzione SccOpenProject
Questa funzione consente di aprire un progetto di controllo del codice sorgente esistente o ne crea uno nuovo.
SCCRTN SccOpenProject (
LPVOID pvContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpProjName,
LPCSTR lpLocalProjPath,
LPSTR lpAuxProjPath,
LPCSTR lpComment,
LPTEXTOUTPROC lpTextOutProc,
LONG dwFlags
);
Parametri
pvContext
[in] la struttura del contesto di plug-in controllo del codice sorgente.hWnd
[in] handle di un oggetto nella finestra IDE che il plug-in controllo del codice sorgente possibile utilizzare come padre di tutte le finestre di dialogo che garantiscono.lpUser
[in, out] nome dell'utente (non superare SCC_USER_SIZE, incluso il carattere di terminazione null).lpProjName
[in] la stringa che identifica il nome del progetto.lpLocalProjPath
[in] il percorso della cartella di lavoro per il progetto.lpAuxProjPath
[in, out] una stringa ausiliaria facoltativa che identifica il progetto (non superare SCC_AUXPATH_SIZE, incluso il carattere di terminazione null).lpComment
[in] commento a un nuovo progetto che si sta creando.lpTextOutProc
[in] funzione di callback facoltativa per visualizzare testo restituito dal plug-in controllo del codice sorgente.dwFlags
[in] segnala se un nuovo progetto sia stato creato se il progetto è sconosciuto al plug-in controllo del codice sorgente. Il valore può essere una combinazione di SCC_OP_CREATEIFNEW e di SCC_OP_SILENTOPEN.
Valore restituito
L'implementazione di plug-in controllo del codice sorgente di questa funzione è previsto che restituisca uno dei seguenti valori:
Valore |
Descrizione |
---|---|
SCC_OK |
Riuscita in aprire il progetto. |
SCC_E_INITIALIZEFAILED |
Il progetto non può essere inizializzato. |
SCC_E_INVALIDUSER |
L'utente non può accedere al sistema di controllo del codice sorgente. |
SCC_E_COULDNOTCREATEPROJECT |
Il progetto non esiste prima della chiamata, il flag di SCC_OPT_CREATEIFNEW è impostato, ma il progetto non venga creato. |
SCC_E_PROJSYNTAXERR |
Sintassi non valida di progetto. |
SCC_E_UNKNOWNPROJECT |
Il progetto è sconosciuto al plug-in controllo del codice sorgente e il flag di SCC_OPT_CREATEIFNEW non è stato impostato. |
SCC_E_INVALIDFILEPATH |
Percorso di file non valido o inutilizzabile. |
SCC_E_NOTAUTHORIZED |
L'utente non è autorizzato a eseguire questa operazione. |
SCC_E_ACCESSFAILURE |
Si è verificato un problema che accede al sistema di controllo del codice sorgente, probabilmente a causa di problemi di conflitto o della rete. Un tentativo è consigliato. |
SCC_E_NONSPECFICERROR |
Un errore non specifico; il sistema di controllo del codice sorgente non è stato inizializzato. |
Note
L'ide possibile passare un nome utente (lpUser), oppure per passare semplicemente in un puntatore a una stringa vuota. Se c " è un nome utente, il plug-in controllo del codice sorgente deve utilizzarlo come impostazione predefinita. Tuttavia, se nessun nome viene passato, o se l'accesso non riesce con il nome specificato, il plug-in deve richiedere all'utente di effettuare l'accesso e il nome valido in lpUser quando riceve. di accesso valido in quanto il plug-in possibile modificare la stringa del nome utente, l'ide sempre allocherà un buffer di dimensione (SCC_USER_LEN+1 o SCC_USER_SIZE, che includono lo spazio per il carattere di terminazione null).
Nota
La prima azione che l'ide può essere necessario eseguire può essere una chiamata alla funzione di SccOpenProject o a Funzione SccGetProjPath.Per questo motivo, entrambi dispongono di un parametro identico di lpUser .
lpAuxProjPath elpProjName vengono letti dal file di soluzione, o restituiti da una chiamata alla funzione di SccGetProjPath . Questi parametri contengono stringhe che il plug-in controllo del codice sorgente associa al progetto e sono significativi solo al plug-in. Se non sono presenti tali stringhe nel file di soluzione e l'utente non è stato richiesto di selezionare (che restituisce una stringa con la funzione di SccGetProjPath ), l'ide passa le stringhe vuote per entrambi gli lpAuxProjPath e lpProjNamee visualizza i valori da aggiornare il plug-in quando la funzione restituisce.
lpTextOutProc è un puntatore a una funzione di callback fornita dall'IDE al plug-in controllo del codice sorgente per visualizzare l'output di output del comando. Questa funzione di callback viene descritto dettagliatamente in LPTEXTOUTPROC.
Nota
Se il plug-in controllo del codice sorgente previsti per usufruire di questo, deve impostare il flag di SCC_CAP_TEXTOUT in Funzione SccInitialize.Se il flag non è impostato, o se l'ide non supporta questa funzionalità, lpTextOutProc verrà NULL.
I controlli di parametro di dwFlags il risultato nel caso in cui il progetto aperto attualmente non esista. È costituito da due bitflags, SCC_OP_CREATEIFNEW e SCC_OP_SILENTOPEN. Se il progetto aperto esiste già, la funzione apre semplicemente il progetto e restituisce SCC_OK. Se il progetto non esiste e se il flag di SCC_OP_CREATEIFNEW è attivata, il plug-in controllo del codice sorgente possibile creare il progetto nel sistema di controllo del codice sorgente, lo apre e restituisce SCC_OK. Se il progetto non esiste e se il flag di SCC_OP_CREATEIFNEW è disattivato, il plug-in deve quindi verificare il flag di SCC_OP_SILENTOPEN . Se il flag non è attivata, il plug-in possibile richiedere all'utente un nome di progetto. Se il flag è attivata, il plug-in deve restituire semplicemente SCC_E_UNKNOWNPROJECT.
Ordine di chiamata
Correttamente, Funzione SccInitialize viene chiamato prima per aprire una sessione del controllo del codice sorgente. Una sessione può essere costituito da una chiamata a SccOpenProject, seguito da altre chiamate di funzione API di plug-in controllo del codice sorgente e termina con una chiamata a Funzione SccCloseProject. Queste sessioni possono essere ripetute più volte prima di Funzione SccUninitialize venga chiamato.
Se il plug-in controllo del codice sorgente imposta SCC_CAP_REENTRANT dispone di un bit in SccInitialize, la sequenza sopra della sessione può essere ripetuta più volte in parallelo. Le strutture differenti di pvContext tenere traccia delle sessioni diversi, in cui ogni pvContext associato a un progetto aperto per volta. In base al parametro dipvContext , il plug-in può determinare quale progetto viene fatto riferimento in una particolare chiamata. Se il bit di capacità SCC_CAP_REENTRANT non è impostato, i collegamenti nonreentrant del controllo del codice sorgente sono limitati nella possibilità di utilizzare più progetti.
Nota
Il bit di SCC_CAP_REENTRANT è stato introdotto nella versione 1,1 del plug-in controllo del codice sorgente API.Non è impostato o viene ignorato nella versione 1,0 e tutti i collegamenti del controllo del codice sorgente della versione 1,0 si presuppone che siano nonreentrant.