SccOpenProject, fonction
Cette fonction ouvre un projet de contrôle de code source existant ou en crée une.
SCCRTN SccOpenProject (
LPVOID pvContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpProjName,
LPCSTR lpLocalProjPath,
LPSTR lpAuxProjPath,
LPCSTR lpComment,
LPTEXTOUTPROC lpTextOutProc,
LONG dwFlags
);
Paramètres
pvContext
[in] La structure du plug-in du contexte de contrôle de code source.hWnd
[in] Un handle de la fenêtre IDE que le plug-in contrôle de code source peut utiliser en tant que parent pour toutes les boîtes de dialogue qu'elle fournit.lpUser
[in, out] Le nom d'utilisateur (pour ne pas dépasser SCC_USER_SIZE, y compris le terminateur null).lpProjName
[in] la chaîne identifiant le nom du projet.lpLocalProjPath
[in] le chemin d'accès au dossier de travail pour le projet.lpAuxProjPath
[in, out]Une chaîne auxiliaire facultative identifiant le projet (pour ne pas dépasser SCC_AUXPATH_SIZE, y compris le terminateur null).lpComment
[in] Commentez à un nouveau projet créé.lpTextOutProc
[in] Une fonction de rappel à la sortie de texte du plug-in contrôle de code source.dwFlags
[in] Signale si un nouveau projet doit être créé lorsque le projet est inconnu au plug-in contrôle de code source. La valeur peut être une combinaison d' SCC_OP_CREATEIFNEW et d' SCC_OP_SILENTOPEN.
Valeur de retour
Il est recommandé que l'implémentation du plug-in du contrôle de code source de cette fonction retourne une des valeurs suivantes :
Valeur |
Description |
---|---|
SCC_OK |
Succès en ouvrant le projet. |
SCC_E_INITIALIZEFAILED |
Le projet n'a pas pu être initialisé. |
SCC_E_INVALIDUSER |
L'utilisateur ne peut pas se connecter au système de contrôle de code source. |
SCC_E_COULDNOTCREATEPROJECT |
Le projet n'existait pas avant l'appel ; la balise d' SCC_OPT_CREATEIFNEW a été définie, mais le projet ne peut pas être créé. |
SCC_E_PROJSYNTAXERR |
Syntaxe valide de projet. |
SCC_E_UNKNOWNPROJECT |
Le projet est inconnu au plug-in contrôle de code source, et la balise d' SCC_OPT_CREATEIFNEW n'a pas été définie. |
SCC_E_INVALIDFILEPATH |
Chemin d'accès valide ou inutilisable. |
SCC_E_NOTAUTHORIZED |
N'est pas autorisé à effectuer cette opération. |
SCC_E_ACCESSFAILURE |
Un problème est survenu lors de l'accès au système de contrôle de code source, probablement en raison de problèmes de réseau ou de conflit. Une démarrage est recommandée. |
SCC_E_NONSPECFICERROR |
Une erreur non spécifique ; le système de contrôle de code source n'a pas été initialisé. |
Notes
L'IDE peut passer dans un nom d'utilisateur (lpUser), ou il peut simplement passer dans un pointeur vers une chaîne vide. S'il y a un nom d'utilisateur, le plug-in contrôle de code source doit utiliser comme valeur par défaut. Toutefois, si aucun nom n'a été passé, ou si la connexion a échoué avec le nom, le plug-in doit demander à l'utilisateur d'ouvrir une session et le nom valide dans lpUser lorsqu'il reçoit une connexion valide. étant donné que le plug-in peut modifier la chaîne de nom d'utilisateur, l'IDE allouera toujours une mémoire tampon de taille (SCC_USER_LEN+1 ou SCC_USER_SIZE, qui inclut l'espace pour le terminateur null).
Notes
La première action que l'IDE peut être requis pour effectuer peut être un appel à la fonction d' SccOpenProject ou au SccGetProjPath, fonction.Pour cette raison, chacun d'eux ont un paramètre identique d' lpUser .
lpAuxProjPath etlpProjName sont lus à partir de le fichier solution, ou sont retournés d'un appel à la fonction d' SccGetProjPath . Ces paramètres contiennent les chaînes que le plug-in contrôle de code source associe au projet et sont significatifs uniquement au plug-in. Si aucune de ces chaînes n'est dans le fichier solution et l'utilisateur n'a pas été invité à parcourir (qui retourne une chaîne par l'intermédiaire de la fonction d' SccGetProjPath ), l'IDE passe des chaînes vides pour les deux lpAuxProjPath et lpProjName, et s'attend à ce que ces valeurs à mettre à jour par le plug-in lorsque cette fonction retourne.
lpTextOutProc est un pointeur vers une fonction de rappel fournie par l'IDE au plug-in contrôle de code source en vue de afficher la sortie de résultat de commande. Cette fonction de rappel est décrite en détail dans LPTEXTOUTPROC.
Notes
Si le plug-in contrôle de code source permet de tirer parti de cela, il doit avoir défini la balise d' SCC_CAP_TEXTOUT dans SccInitialize, fonction.Si cet indicateur n'a pas été définie, ou si l'IDE ne prend pas en charge cette fonctionnalité, lpTextOutProc sera NULL.
Les contrôles de paramètre d' dwFlags les résultats au cas où le projet étant ouvert n'existerait pas actuellement. Il se compose de deux bitflags, SCC_OP_CREATEIFNEW et SCC_OP_SILENTOPEN. Si le projet étant ouvert existe déjà, la fonction ouvre simplement le projet et retourne SCC_OK. Si le projet n'existe pas et si la balise d' SCC_OP_CREATEIFNEW est activée, le plug-in contrôle de code source peut créer le projet dans le système de contrôle de code source, l'ouvre, et retourne SCC_OK. Si le projet n'existe pas, et si la balise d' SCC_OP_CREATEIFNEW est désactivée, le plug-in doit ensuite vérifier la balise d' SCC_OP_SILENTOPEN . Si cet indicateur n'est pas activée, le plug-in peut inviter l'utilisateur à un nom de projet. Si elle est activée, le plug-in doit simplement retourner SCC_E_UNKNOWNPROJECT.
Ordre d'appel
Dans le cours des événements normal, SccInitialize, fonction est appelé en premier pour ouvrir une session de contrôle de code source. Une session peut être un appel à SccOpenProject, suivi d'autres appels de fonction API du plug-in du contrôle de code source, et se termine par un appel à SccCloseProject, fonction. De telles session peuvent être répétées plusieurs fois avant SccUninitialize, fonction ne soit appelée.
Si le plug-in contrôle de code source définit SCC_CAP_REENTRANT un bit dans SccInitialize, la séquence ci-dessus de session peut être répétée plusieurs fois en parallèle. Les diverses structures d' pvContext suivent les différentes sessions, dans lesquelles chaque pvContext est associé à un projet ouvert à la fois. Selon le paramètre d'pvContext , le plug-in peut déterminer le projet est référencé dans n'importe quel appel particulier. Si le bit SCC_CAP_REENTRANT de fonction n'est pas défini, le plug-ins de contrôle de code source nonreentrant est limité dans leur capacité à utiliser plusieurs projets.
Notes
Le bit d' SCC_CAP_REENTRANT a été introduit dans la version 1,1 de l'API de plug-in contrôle de code source.Il n'est pas défini ou est ignoré dans la version 1,0, et il est supposé que tous les plug-ins de contrôle de code source de la version 1,0 est nonreentrant.