Aracılığıyla paylaş


SccGetProjPath işlevi

Bu işlev, kullanıcıdan yalnızca kaynak denetimi eklentisi için anlamlı olan bir dize olan proje yolunu ister. Kullanıcı şu durumlarda çağrılır:

  • Yeni proje oluşturma

  • Var olan bir projeyi sürüm denetimine ekleme

  • Var olan bir sürüm denetimi projesini bulmaya çalışma

Sözdizimi

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

Parametreler

pvContext

[in] Kaynak denetimi eklentisi bağlam yapısı.

Hwnd

[in] Kaynak denetimi eklentisinin sağladığı iletişim kutuları için üst öğe olarak kullanabileceği IDE penceresinin tanıtıcısı.

lpUser

[in, out] Kullanıcı adı (NULL sonlandırıcısı dahil olmak üzere SCC_USER_SIZE aşmamak için)

lpProjName

[in, out] IDE projesinin, proje çalışma alanının veya derleme dosyasının adı (NULL sonlandırıcı dahil olmak üzere SCC_PRJPATH_SIZE aşmamak için).

lpLocalPath

[in, out] Projenin çalışma yolu. ise bAllowChangePath TRUE, kaynak denetimi eklentisi bu dizeyi değiştirebilir (null-terminator dahil olmak üzere _MAX_PATH aşmamak için).

lpAuxProjPath

[in, out] Döndürülen proje yolu için bir arabellek (NULL sonlandırıcısı da dahil olmak üzere SCC_PRJPATH_SIZE aşmamak).

bAllowChangePath

[in] Bu ise TRUE, kaynak denetimi eklentisi dizeyi lpLocalPath isteyebilir ve değiştirebilir.

pbNew

[in, out] gelen değer, yeni proje oluşturulup oluşturulmayacağını gösterir. Döndürülen değer, proje oluşturma işleminin başarılı olduğunu gösterir:

Gelen Yorumlama
TRUE Kullanıcı yeni bir proje oluşturabilir.
FALSE Kullanıcı yeni bir proje oluşturamayabilir.
Giden Yorumlama
TRUE Yeni bir proje oluşturuldu.
FALSE Mevcut bir proje seçildi.

Dönüş değeri

Bu işlevin kaynak denetimi eklentisinin aşağıdaki değerlerden birini döndürmesi beklenir:

Value Açıklama
SCC_OK Proje başarıyla oluşturuldu veya alındı.
SCC_I_OPERATIONCANCELED İşlem iptal edildi iletisiyle zaman aşımına uğrayabilir.
SCC_E_ACCESSFAILURE Büyük olasılıkla ağ veya çekişme sorunlarından dolayı kaynak denetim sistemine erişilirken bir sorun oluştu.
SCC_E_CONNECTIONFAILURE Kaynak denetim sistemine bağlanmaya çalışırken bir sorun oluştu.
SCC_E_NONSPECIFICERROR Belirtilmeyen bir hata oluştu.

Açıklamalar

Bu işlevin amacı, IDE'nin ve lpAuxProjPathparametrelerini lpProjName almasıdır. Kaynak denetimi eklentisi kullanıcıdan bu bilgileri istedikten sonra bu iki dizeyi IDE'ye geri geçirir. IDE, bu dizeleri çözüm dosyasında kalıcı hale getirerek kullanıcı bu projeyi her açtığında SccOpenProject'e geçirir. Bu dizeler, eklentinin bir projeyle ilişkili bilgileri izlemesini sağlar.

İşlev ilk çağrıldığında boş lpAuxProjPath bir dizeye ayarlanır. lProjName ayrıca boş olabilir veya kaynak denetimi eklentisinin kullanabileceği veya yoksayabileceği IDE proje adını içerebilir. İşlev başarıyla döndürdüğünde, eklenti karşılık gelen iki dizeyi döndürür. IDE bu dizeler hakkında hiçbir varsayımda bulunmaz, bunları kullanmaz ve kullanıcının bunları değiştirmesine izin vermez. Kullanıcı ayarları değiştirmek isterse, IDE önceki seferde aldığı değerleri geçirerek yeniden çağırır SccGetProjPath . Bu, eklentiye bu iki dize üzerinde tam denetim sağlar.

için lpUser, IDE bir kullanıcı adı geçirebilir veya işaretçiyi boş bir dizeye geçirebilir. Kullanıcı adı varsa, kaynak denetimi eklentisi bunu varsayılan olarak kullanmalıdır. Ancak, herhangi bir ad geçirilmediyse veya belirtilen adla oturum açma başarısız olduysa, eklenti kullanıcıdan oturum açma isteğinde bulunmalı ve geçerli bir oturum açma bilgisi aldığında adı yeniden lpUser geçirmelidir. Eklenti bu dizeyi değiştirebileceğinden, IDE her zaman boyut (SCC_USER_LEN+1) arabellek ayırır.

Not

IDE'nin gerçekleştirdiği ilk eylem, işleve veya SccGetProjPath işleve SccOpenProject yönelik bir çağrı olabilir. Bu nedenle, her ikisi de aynı lpUser parametreye sahiptir ve bu da kaynak denetimi eklentisinin kullanıcının her ikisinde de oturum açmasını sağlar. İşlevden dönüş bir hata olduğunu gösteriyor olsa bile, eklentinin bu dizeyi geçerli bir oturum açma adıyla doldurması gerekir.

lpLocalPath , kullanıcının projeyi tuttuğu dizindir. Boş bir dize olabilir. Şu anda tanımlanmış bir dizin yoksa (kaynak denetim sisteminden proje indirmeye çalışan bir kullanıcı gibi) ve ise bAllowChangePath TRUE, kaynak denetim eklentisi kullanıcıdan giriş isteyebilir veya içine kendi dizesini lpLocalPathyerleştirmek için başka bir yöntem kullanabilir. ise bAllowChangePath FALSE, kullanıcı belirtilen dizinde zaten çalıştığından eklenti dizeyi değiştirmemelidir.

Kullanıcı kaynak denetimine konulmak üzere yeni bir proje oluşturursa, kaynak denetimi eklentisi o sırada SccGetProjPath kaynak denetim sisteminde bu projeyi oluşturmayabilir. Bunun yerine, dizeyi için sıfır olmayan bir değerle pbNewbirlikte geri geçirir ve projenin kaynak denetim sisteminde oluşturulacağını belirtir.

Örneğin, Visual Studio'daki Yeni Proje sihirbazındaki bir kullanıcı projesini kaynak denetimine eklerse, Visual Studio bu işlevi çağırır ve eklenti, kaynak denetim sisteminde Visual Studio projesini içerecek yeni bir proje oluşturmanın uygun olup olmadığını belirler. Kullanıcı sihirbazı tamamlamadan önce İptal'e tıklarsa proje hiçbir zaman oluşturulmaz. Kullanıcı Tamam'a tıklarsa, Visual Studio öğesini çağırır SccOpenProjectSCC_OPT_CREATEIFNEWve bu sırada kaynak denetimli proje oluşturulur.

Ayrıca bkz.