次の方法で共有


SccAddFromScc 関数

この関数では、ソース管理システムに既に存在するファイルをユーザーが参照し、そのファイルを現在のプロジェクトの一部として含めることができます。 たとえば、この関数では、ファイルをコピーすることなく、共通のヘッダー ファイルを現在のプロジェクトに取得できます。 返されるファイルの配列 lplpFileNames には、ユーザーが IDE プロジェクトに追加するファイルのリストが含まれています。

構文

SCCRTN SccAddFromScc (
   LPVOID   pvContext,
   HWND     hWnd,
   LPLONG   lpnFiles,
   LPCSTR** lplpFileNames
);

パラメーター

pvContext

[入力] ソース管理プラグインのコンテキスト構造体。

hWnd

[入力] ソース管理プラグインが、提供するすべてのダイアログ ボックスの親として使用できる IDE ウィンドウへのハンドル。

lpnFiles

[入力、出力] 追加されるファイルの数のバッファー。 (これは、lplpFileNames で指し示されているメモリが解放される場合は NULL です。詳細については、「備考」を参照してください)。

lplpFileNames

[入力、出力] ディレクトリ パスのない、すべてのファイル名へのポインターの配列。 この配列は、ソース管理プラグインによって割り当ておよび解放が行われます。 lpnFiles = 1 で、lplpFileNamesNULL ではない場合、lplpFileNames によって指されている配列の最初の名前には追加先のフォルダーが含まれています。

戻り値

この関数のソース管理プラグインの実装では、次のいずれかの値が返されることが予期されています。

説明
SCC_OK ファイルが正常に検出され、プロジェクトに追加されました。
SCC_I_OPERATIONCANCELED 操作が取り消されました。追加は行われません。
SCC_I_RELOADFILE ファイルまたはプロジェクトを再度読み込む必要があります。

解説

IDE によってこの関数が呼び出されます。 ソース管理プラグインでローカルの出力先フォルダーの指定がサポートされる場合、IDE では lpnFiles = 1 を渡し、ローカル フォルダー名を lplpFileNames に渡します。

SccAddFromScc 関数への呼び出しが戻ると、プラグインによって lpnFileslplpFileNames に値が割り当てられ、必要に応じてファイル名配列のメモリが割り当てられます (この割り当てによって lplpFileNames のポインターが置き換えられることに注意してください)。 ソース管理プラグインは、すべてのファイルをユーザーのディレクトリまたは指定された追加先フォルダーに配置する役割を担います。 その後、IDE によって、IDE プロジェクトにファイルが追加されます。

最後に、IDE によってこの関数の 2 回目の呼び出しが行われます (lpnFilesNULL が渡されます)。 これは、lplpFileNames``. のファイル名配列に割り当てられたメモリを解放するために、ソース管理プラグインによって特別なシグナルとして解釈されます

lplpFileNameschar *** ポインターです。 ソース管理プラグインによって、ファイル名へのポインターの配列へのポインターが配置されるため、この API の標準的な方法でリストが渡されます。

Note

VSSCI API の初期バージョンでは、追加されたファイルのターゲットプロジェクトを示す方法が提供されていませんでした。 これに対応するために、lplpFIleNames パラメーターのセマンティクスが拡張され、出力パラメーターではなく入力/出力パラメーターにされました。 1 つのファイルのみが指定された場合 (つまり、lpnFiles = 1 によって指されている値)、lplpFileNames の最初の要素にはターゲット フォルダーが含まれています。 これらの新しいセマンティクスを使用するために、IDE は SccSetOption 関数を呼び出し、 nOption パラメーターを SCC_OPT_SHARESUBPROJ に設定します。 ソース管理プラグインでこのセマンティクスがサポートされない場合は、SCC_E_OPTNOTSUPPORTED が返されます。 これにより、ソース管理からの追加機能の使用が無効になります。 プラグインでソース管理からの追加機能 (SCC_CAP_ADDFROMSCC) がサポートされる場合は、新しいセマンティクスをサポートし、SCC_I_SHARESUBPROJOK が返される必要があります。

関連項目