SccOpenProject (Función)
Esta función abre un proyecto de control de código fuente existente o crea uno nuevo.
Sintaxis
SCCRTN SccOpenProject (
LPVOID pvContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpProjName,
LPCSTR lpLocalProjPath,
LPSTR lpAuxProjPath,
LPCSTR lpComment,
LPTEXTOUTPROC lpTextOutProc,
LONG dwFlags
);
Parámetros
pvContext
[in] Estructura del contexto del complemento de control de código fuente.
hWnd
[in] Identificador de la ventana del IDE que el complemento de control de código fuente puede usar como elemento primario para los cuadros de diálogo que proporciona.
lpUser
[dentro, fuera] Nombre del usuario (que no se debe superar SCC_USER_SIZE, incluido el terminador NULL).
lpProjName
[in] Cadena que identifica el nombre del proyecto.
lpLocalProjPath
[in] Ruta de acceso a la carpeta de trabajo del proyecto.
lpAuxProjPath
[dentro, fuera] Cadena auxiliar opcional que identifica el proyecto (no se debe superar SCC_AUXPATH_SIZE, incluido el terminador NULL).
lpComment
[in] Comente un nuevo proyecto que se va a crear.
lpTextOutProc
[in] Función de devolución de llamada opcional para mostrar la salida de texto del complemento de control de código fuente.
dwFlags
[in] Indica si es necesario crear un nuevo proyecto si el proyecto es desconocido para el complemento de control de código fuente. El valor puede ser una combinación de SCC_OP_CREATEIFNEW
y SCC_OP_SILENTOPEN.
Valor devuelto
Se espera que la implementación del complemento de control de código fuente de esta función devuelva uno de los siguientes valores:
Valor | Descripción |
---|---|
SCC_OK | Se ha realizado correctamente la apertura del proyecto. |
SCC_E_INITIALIZEFAILED | No se pudo inicializar el proyecto. |
SCC_E_INVALIDUSER | El usuario no pudo iniciar sesión en el sistema de control de código fuente. |
SCC_E_COULDNOTCREATEPROJECT | El proyecto no existía antes de la llamada; se estableció la SCC_OPT_CREATEIFNEW marca, pero no se pudo crear el proyecto. |
SCC_E_PROJSYNTAXERR | Sintaxis de proyecto no válida. |
SCC_E_UNKNOWNPROJECT | El proyecto es desconocido para el complemento de control de código fuente y no se estableció la SCC_OPT_CREATEIFNEW marca. |
SCC_E_INVALIDFILEPATH | Ruta de acceso de archivo no válida o no utilizable. |
SCC_E_NOTAUTHORIZED | No se permite al usuario realizar esta operación. |
SCC_E_ACCESSFAILURE | Se produjo un problema al acceder al sistema de control de código fuente, probablemente debido a problemas de red o contención. Se recomienda un reintento. |
SCC_E_NONSPECFICERROR | Un error no específico; el sistema de control de código fuente no se inicializó. |
Comentarios
El IDE puede pasar un nombre de usuario (lpUser
) o simplemente pasar un puntero a una cadena vacía. Si hay un nombre de usuario, el complemento de control de código fuente debe usarlo como valor predeterminado. Sin embargo, si no se pasó ningún nombre o si se produjo un error en el inicio de sesión con el nombre especificado, el complemento debe pedir al usuario que inicie sesión y devolverá el nombre válido cuando lpUser
reciba un inicio de sesión.
válido Porque el complemento puede cambiar la cadena de nombre de usuario, el IDE siempre asignará un búfer de tamaño (SCC_USER_LEN
+1 o SCC_USER_SIZE, que incluye espacio para el terminador nulo).
Nota:
La primera acción que puede ser necesaria para realizar el IDE puede ser una llamada a la SccOpenProject
función o a SccGetProjPath. Por este motivo, ambos tienen un parámetro idéntico lpUser
.
lpAuxProjPath
y lpProjName
se leen desde el archivo de solución o se devuelven desde una llamada a la SccGetProjPath
función . Estos parámetros contienen las cadenas que el complemento de control de código fuente asocia al proyecto y solo son significativas para el complemento. Si no hay cadenas de este tipo en el archivo de solución y no se le ha pedido al usuario que examine (lo que devolvería una cadena a través de la SccGetProjPath
función), el IDE pasa cadenas vacías para lpAuxProjPath
y lpProjName
y espera que el complemento actualice estos valores cuando se devuelva esta función.
lpTextOutProc
es un puntero a una función de devolución de llamada proporcionada por el IDE al complemento de control de código fuente para mostrar la salida del resultado del comando. Esta función de devolución de llamada se describe en detalle en LPTEXTOUTPROC.
Nota:
Si el complemento de control de código fuente pretende aprovechar esto, debe haber establecido la SCC_CAP_TEXTOUT
marca en SccInitialize. Si no se estableció esa marca o si el IDE no admite esta característica, lpTextOutProc
será NULL
.
El dwFlags
parámetro controla el resultado en caso de que el proyecto que se abra no exista actualmente. Consta de dos bitflags y SCC_OP_CREATEIFNEW
SCC_OP_SILENTOPEN
. Si el proyecto que se abre ya existe, la función simplemente abre el proyecto y devuelve SCC_OK
. Si el proyecto no existe y si la SCC_OP_CREATEIFNEW
marca está activada, el complemento de control de código fuente puede crear el proyecto en el sistema de control de código fuente, abrirlo y devolver SCC_OK
. Si el proyecto no existe y, si la SCC_OP_CREATEIFNEW
marca está desactivada, el complemento debe comprobar la SCC_OP_SILENTOPEN
marca. Si esa marca no está activada, el complemento puede pedir al usuario un nombre de proyecto. Si esa marca está activada, el complemento simplemente debe devolver SCC_E_UNKNOWNPROJECT
.
Pedido de llamada
En el curso normal de los eventos, se llamaría A SccInitialize primero para abrir una sesión de control de código fuente. Una sesión puede constar de una llamada a SccOpenProject
, seguida de otras llamadas a funciones de la API del complemento de control de código fuente y finalizará con una llamada a SccCloseProject. Estas sesiones se pueden repetir varias veces antes de llamar a SccUninitialize .
Si el complemento de control de código fuente establece el SCC_CAP_REENTRANT
bit en SccInitialize
, la secuencia de sesión anterior puede repetirse muchas veces en paralelo. Las distintas pvContext
estructuras realizan un seguimiento de las distintas sesiones, en las que cada pvContext
una está asociada a un proyecto abierto a la vez. En función del pvContext
parámetro , el complemento puede determinar a qué proyecto se hace referencia en cualquier llamada concreta. Si no se establece el bit SCC_CAP_REENTRANT
de funcionalidad, los complementos de control de código fuente no reentrantes están limitados en su capacidad de trabajar con varios proyectos.
Nota:
El SCC_CAP_REENTRANT
bit se introdujo en la versión 1.1 de la API del complemento de control de código fuente. No se establece o se omite en la versión 1.0 y se supone que todos los complementos de control de código fuente de la versión 1.0 no son reentrantes.