SccGetProjPath 函数

此函数提示用户输入项目路径,该项目路径是仅对源代码管理插件有意义的字符串。 当用户为:

  • 创建新项目

  • 将现有项目添加到版本控制

  • 尝试查找现有版本控制项目

语法

SCCRTN SccGetProjPath (
   LPVOID pvContext,
   HWND   hWnd,
   LPSTR  lpUser,
   LPSTR  lpProjName,
   LPSTR  lpLocalPath,
   LPSTR  lpAuxProjPath,
   BOOL   bAllowChangePath,
   LPBOOL pbNew
);

参数

pvContext

[in]源代码管理插件上下文结构。

hWnd

[in]源代码管理插件可以作为其提供的任何对话框的父级的 IDE 窗口的句柄。

lpUser

[in, out]用户名(不超过SCC_U标准版R_SIZE,包括 NULL 终止符)

lpProjName

[in, out]IDE 项目、项目工作区或生成文件的名称(不得超过SCC_PRJPATH_SIZE,包括 NULL 终止符)。

lpLocalPath

[in, out]项目的工作路径。 TRUE如果是bAllowChangePath,源代码管理插件可以修改此字符串(不超过_MAX_PATH,包括 null 终止符)。

lpAuxProjPath

[in, out]返回的项目路径的缓冲区(不超过SCC_PRJPATH_SIZE,包括 NULL 终止符)。

bAllowChangePath

[in]如果是, TRUE源代码管理插件可以提示并修改 lpLocalPath 字符串。

pbNew

[in, out]传入的值指示是否创建新项目。 返回的值指示创建项目是否成功:

传入 解释
TRUE 用户可以创建新项目。
FALSE 用户可能不会创建新项目。
传出 解释
TRUE 创建了一个新项目。
FALSE 已选择现有项目。

返回值

此函数的源代码管理插件实现应返回以下值之一:

说明
SCC_OK 已成功创建或检索项目。
SCC_I_OPERATIONCANCELED 操作已取消。
SCC_E_ACCESSFAILURE 访问源代码管理系统时出现问题,可能是因为网络或争用问题。
SCC_E_CONNECTIONFAILURE 尝试连接到源代码管理系统时出现问题。
SCC_E_NONSPECIFICERROR 发生了未指定的错误。

备注

此函数的用途是 IDE 获取参数 lpProjNamelpAuxProjPath。 源代码管理插件提示用户输入此信息后,它会将这两个字符串传回 IDE。 每当用户打开此项目时,IDE 在其解决方案文件中保留这些字符串并将其传递给 SccOpenProject 。 这些字符串使插件能够跟踪与项目关联的信息。

首次调用函数时, lpAuxProjPath 将设置为空字符串。 lProjName 也可能为空,也可能包含 IDE 项目名称,源代码管理插件可以使用或忽略该名称。 当函数成功返回时,插件将返回两个相应的字符串。 IDE 不会对这些字符串做出任何假设,也不会使用这些字符串,并且不允许用户修改它们。 如果用户想要更改设置,IDE 将再次调用 SccGetProjPath ,并传入前一次收到的相同值。 这样,插件就可以完全控制这两个字符串。

对于 lpUser,IDE 可能会传入用户名,或者它可能只传入指向空字符串的指针。 如果有用户名,源代码管理插件应将其用作默认值。 但是,如果未传递任何名称,或者登录名使用给定名称失败,插件应提示用户输入登录名,并在收到有效登录名时将名称传回 lpUser 。 由于插件可能会更改此字符串,因此 IDE 将始终分配大小为 (SCC_USER_LEN+1) 的缓冲区。

注意

IDE 执行的第一个操作可能是对 SccOpenProject 函数或函数的 SccGetProjPath 调用。 因此,这两个参数都具有相同的 lpUser 参数,这使源代码管理插件可以在任一时间登录用户。 即使函数返回指示失败,插件也必须用有效的登录名填充此字符串。

lpLocalPath 是用户保留项目的目录。 它可能是空字符串。 如果当前没有定义目录(就尝试从源代码管理系统下载项目的用户而言),并且如果是bAllowChangePathTRUE,源代码管理插件可以提示用户输入或使用其他方法将自己的字符串lpLocalPath放入其中。 FALSE如果是bAllowChangePath,插件不应更改字符串,因为用户已在指定目录中工作。

如果用户创建了要置于源代码管理下的新项目,则调用源代码管理插件实际上可能不会在源代码管理系统 SccGetProjPath 中创建它。 而是将字符串与非零值 pbNew一起传回,指示项目将在源代码管理系统中创建。

例如,如果 Visual Studio 的 “新建项目 ”向导中的某个用户将他或她的项目添加到源代码管理中,则 Visual Studio 将调用此函数,该插件确定是否可以在源代码管理系统中创建新项目以包含 Visual Studio 项目。 如果用户在完成向导之前单击“取消”,则永远不会创建项目。 如果用户单击“确定,Visual Studio 将调用SccOpenProject、传入SCC_OPT_CREATEIFNEW和源控制项目,此时会创建。

另请参阅