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 IDE.
Sintaxe
SCCRTN SccAddFromScc (
LPVOID pvContext,
HWND hWnd,
LPLONG lpnFiles,
LPCSTR** lplpFileNames
);
Parâmetros
pvContext
[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 qualquer caixa de diálogo fornecida.
Arquivos lpn
[dentro, fora] Um buffer para o número de arquivos que estão sendo adicionados. (Isso se NULL
a memória apontada por lplpFileNames
for liberada. Consulte Comentários para obter detalhes.)
lplpNomes_de_Arquivos
[dentro, fora] Uma matriz de ponteiros para todos os nomes de arquivo sem caminhos de diretório. Essa matriz é alocada e liberada 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 sucesso 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 do código-fonte oferecer suporte à especificação de uma pasta de destino local, o IDE passará lpnFiles
= 1 e passará o nome da pasta local para lplpFileNames
.
Quando a chamada para a SccAddFromScc
função retorna, o plug-in atribuiu valores a lpnFiles
e lplpFileNames
, alocando a memória para a matriz de nomes 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.
Por fim, o IDE chama essa função uma segunda vez, passando NULL
para lpnFiles
. Isso é interpretado como um sinal especial pelo plug-in de controle do código-fonte para liberar a memória alocada para a matriz de nomes 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 arquivo, 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 lplpFIleNames
do parâmetro foi aprimorada para torná-lo um parâmetro de entrada/saída em vez de 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 lplpFileNames
conterá a pasta de 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 do código-fonte 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
.