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 获取参数 lpProjName
和 lpAuxProjPath
。 源代码管理插件提示用户输入此信息后,它会将这两个字符串传回 IDE。 每当用户打开此项目时,IDE 在其解决方案文件中保留这些字符串并将其传递给 SccOpenProject 。 这些字符串使插件能够跟踪与项目关联的信息。
首次调用函数时, lpAuxProjPath
将设置为空字符串。 lProjName
也可能为空,也可能包含 IDE 项目名称,源代码管理插件可以使用或忽略该名称。 当函数成功返回时,插件将返回两个相应的字符串。 IDE 不会对这些字符串做出任何假设,也不会使用这些字符串,并且不允许用户修改它们。 如果用户想要更改设置,IDE 将再次调用 SccGetProjPath
,并传入前一次收到的相同值。 这样,插件就可以完全控制这两个字符串。
对于 lpUser
,IDE 可能会传入用户名,或者它可能只传入指向空字符串的指针。 如果有用户名,源代码管理插件应将其用作默认值。 但是,如果未传递任何名称,或者登录名使用给定名称失败,插件应提示用户输入登录名,并在收到有效登录名时将名称传回 lpUser
。 由于插件可能会更改此字符串,因此 IDE 将始终分配大小为 (SCC_USER_LEN
+1) 的缓冲区。
注意
IDE 执行的第一个操作可能是对 SccOpenProject
函数或函数的 SccGetProjPath
调用。 因此,这两个参数都具有相同的 lpUser
参数,这使源代码管理插件可以在任一时间登录用户。 即使函数返回指示失败,插件也必须用有效的登录名填充此字符串。
lpLocalPath
是用户保留项目的目录。 它可能是空字符串。 如果当前没有定义目录(就尝试从源代码管理系统下载项目的用户而言),并且如果是bAllowChangePath
TRUE
,源代码管理插件可以提示用户输入或使用其他方法将自己的字符串lpLocalPath
放入其中。 FALSE
如果是bAllowChangePath
,插件不应更改字符串,因为用户已在指定目录中工作。
如果用户创建了要置于源代码管理下的新项目,则调用源代码管理插件实际上可能不会在源代码管理系统 SccGetProjPath
中创建它。 而是将字符串与非零值 pbNew
一起传回,指示项目将在源代码管理系统中创建。
例如,如果 Visual Studio 的 “新建项目 ”向导中的某个用户将他或她的项目添加到源代码管理中,则 Visual Studio 将调用此函数,该插件确定是否可以在源代码管理系统中创建新项目以包含 Visual Studio 项目。 如果用户在完成向导之前单击“取消”,则永远不会创建项目。 如果用户单击“确定”,Visual Studio 将调用SccOpenProject
、传入SCC_OPT_CREATEIFNEW
和源控制项目,此时会创建。