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, , lplpFileNamesconté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 NULLfor , 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 SccAddFromScclpnFiles 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 nOptionparâ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.

Confira também