Função SccAddFromScc
Essa função permite que o usuário procure arquivos que já estão no sistema de controle do código-fonte e, posteriormente, torne esses arquivos parte do projeto atual. Por exemplo, essa função pode obter um arquivo de cabeçalho comum no projeto atual sem copiar o arquivo. A matriz de retorno de arquivos, , lplpFileNames
contém a lista de arquivos que o usuário deseja adicionar ao projeto do IDE.
Sintaxe
SCCRTN SccAddFromScc (
LPVOID pvContext,
HWND hWnd,
LPLONG lpnFiles,
LPCSTR** lplpFileNames
);
Parâmetros
pvContexto
[em] A estrutura de contexto do plug-in de controle do código-fonte.
hWnd
[em] Um identificador para a janela do IDE que o plug-in de controle do código-fonte pode usar como pai para quaisquer caixas de diálogo que ele forneça.
lpnArquivos
[dentro, fora] Um buffer para o número de arquivos que estão sendo adicionados. (Isso NULL
se a memória apontada por lplpFileNames
for liberada. Consulte Comentários para obter detalhes.)
lplpFileNames
[dentro, fora] Uma matriz de ponteiros para todos os nomes de arquivo sem caminhos de diretório. Esse array é alocado e liberado pelo plug-in de controle do código-fonte. Se lpnFiles
= 1 e lplpFileNames
não NULL
for , o primeiro nome na matriz apontada por lplpFileNames
contém a pasta de destino.
Valor de retorno
Espera-se que a implementação do plug-in de controle do código-fonte dessa função retorne um dos seguintes valores:
Valor | Descrição |
---|---|
SCC_OK | Os arquivos foram localizados com êxito e adicionados ao projeto. |
SCC_I_OPERATIONCANCELED | A operação foi cancelada sem efeito. |
SCC_I_RELOADFILE | Um arquivo ou projeto precisa ser recarregado. |
Comentários
O IDE chama essa função. Se o plug-in de controle de origem oferecer suporte à especificação de uma pasta de destino local, o IDE passa = 1 e passa lpnFiles
o nome da pasta local para lplpFileNames
.
Quando a chamada para a função retorna, o plug-in atribuiu valores a e lplpFileNames
, alocando a memória para a SccAddFromScc
lpnFiles
matriz de nome de arquivo conforme necessário (observe que essa alocação substitui o ponteiro em lplpFileNames
). O plug-in de controle do código-fonte é responsável por colocar todos os arquivos no diretório do usuário ou na pasta de designação especificada. Em seguida, o IDE adiciona os arquivos ao projeto do IDE.
Finalmente, o IDE chama essa função uma segunda vez, passando NULL
para lpnFiles
. Isso é interpretado como um sinal especial pelo plug-in de controle de origem para liberar a memória alocada para a matriz de nome de arquivo em lplpFileNames``.
lplpFileNames
é um char ***
ponteiro. O plug-in de controle do código-fonte coloca um ponteiro para uma matriz de ponteiros para nomes de arquivos, passando assim a lista da maneira padrão para essa API.
Observação
As versões iniciais da API VSSCI não forneciam uma maneira de indicar o projeto de destino para os arquivos adicionados. Para acomodar isso, a semântica do parâmetro foi aprimorada para torná-lo um parâmetro de entrada/saída em vez de lplpFIleNames
um parâmetro de saída. Se apenas um único arquivo for especificado, ou seja, o valor apontado por lpnFiles
= 1, o primeiro elemento de conterá a pasta de lplpFileNames
destino. Para usar essa nova semântica, o IDE chama a SccSetOption
função com o nOption
parâmetro definido como SCC_OPT_SHARESUBPROJ
. Se um plug-in de controle de origem não oferecer suporte à semântica, ele retornará SCC_E_OPTNOTSUPPORTED
. Isso desabilita o uso do recurso Adicionar do controle do código-fonte. Se um plug-in oferecer suporte ao recurso Adicionar do Controle do Código-Fonte (SCC_CAP_ADDFROMSCC
), ele deverá oferecer suporte à nova semântica e retornar SCC_I_SHARESUBPROJOK
.