Aracılığıyla paylaş


LPTEXTOUTPROC

Kullanıcı tümleşik geliştirme ortamının (IDE) içinden bir kaynak denetimi işlemi yürüttüğünde, kaynak denetimi eklentisi işlemle ilgili hata veya durum iletilerini iletmek isteyebilir. Eklenti bu amaçla kendi ileti kutularını görüntüleyebilir. Ancak, daha sorunsuz tümleştirme için eklenti, dizeleri IDE'ye geçirerek durum bilgilerini yerel olarak görüntülemelerini sağlayabilir. Bunun mekanizması işlev işaretçisidir LPTEXTOUTPROC . IDE, hata ve durumu görüntülemek için bu işlevi (aşağıda daha ayrıntılı olarak açıklanmıştır) uygular.

IDE, SccOpenProject çağrılırken parametre olarak bu işlevin lpTextOutProc bir işlev işaretçisini kaynak denetimi eklentisine geçirir. Bir SCC işlemi sırasında, örneğin, çok sayıda dosya içeren SccGet çağrısının ortasında, eklenti işlevi çağırabilir LPTEXTOUTPROC ve görüntülenecek dizeleri düzenli aralıklarla geçirebilir. IDE bu dizeleri bir durum çubuğunda, çıkış penceresinde veya uygun şekilde ayrı bir ileti kutusunda görüntüleyebilir. İsteğe bağlı olarak, IDE bazı iletileri İptal düğmesiyle görüntüleyebilir. Bu, kullanıcının işlemi iptal etmesine olanak tanır ve IDE'ye bu bilgileri eklentiye geri geçirme olanağı verir.

İmza

IDE'nin çıkış işlevi aşağıdaki imzaya sahiptir:

typedef LONG (*LPTEXTOUTPROC) (
   LPSTR display_string,
   LONG mesg_type
);

Parametreler

display_string

Görüntülenecek metin dizesi. Bu dize, satır başı veya satır besleme ile sonlandırılmamalıdır.

mesg_type

İletinin türü. Aşağıdaki tabloda bu parametre için desteklenen değerler listelenmektedir.

Value Açıklama
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR İleti Bilgi, Uyarı veya Hata olarak kabul edilir.
SCC_MSG_STATUS İleti durumu gösterir ve durum çubuğunda görüntülenebilir.
SCC_MSG_DOCANCEL İleti dizesi olmadan gönderilir.
SCC_MSG_STARTCANCEL İptal düğmesini görüntülemeye başlar.
SCC_MSG_STOPCANCEL İptal düğmesini görüntülemeyi durdurur.
SCC_MSG_BACKGROUND_IS_CANCELLED Arka plan işleminin iptal edilecek olup olmadığını IDE'ye sorar: İşlem iptal edilirse IDE döndürür SCC_MSG_RTN_CANCEL ; aksi takdirde döndürür SCC_MSG_RTN_OK. display_string parametresi, kaynak denetimi eklentisi tarafından sağlanan bir SccMsgDataIsCancelled yapısı olarak yayınlanır.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE IDE'ye bir dosya sürüm denetiminden alınmadan önce bildirir. display_string parametresi, kaynak denetimi eklentisi tarafından sağlanan bir SccMsgDataOnBeforeGetFile yapısı olarak yayınlanır.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE IDE'ye bir dosya sürüm denetiminden alındıktan sonra bildirir. display_string parametresi, kaynak denetimi eklentisi tarafından sağlanan bir SccMsgDataOnAfterGetFile yapısı olarak yayınlanır.
SCC_MSG_BACKGROUND_ON_MESSAGE Bir arka plan işleminin geçerli durumunu IDE'ye bildirir. display_string parametresi, kaynak denetimi eklentisi tarafından sağlanan bir SccMsgDataOnMessage yapısı olarak yayınlanır.

Dönüş değeri

Value Açıklama
SCC_MSG_RTN_OK Dize görüntülendi veya işlem başarıyla tamamlandı.
SCC_MSG_RTN_CANCEL Kullanıcı işlemi iptal etmek istiyor.

Örnek

IDE'nin yirmi dosya adıyla SccGet'i çağırıp çağırmaz. Kaynak denetimi eklentisi, bir dosya alma işleminin ortasında işlemin iptal edilmesini önlemek istiyor. Her dosyayı aldıktan sonra öğesini çağırır lpTextOutProcve her dosyadaki durum bilgilerini iletir ve bildirecek durumu yoksa bir SCC_MSG_DOCANCEL ileti gönderir. Eklenti herhangi bir zamanda IDE'den dönüş değeri SCC_MSG_RTN_CANCEL alırsa, daha fazla dosya alınmaması için alma işlemini hemen iptal eder.

Yapılar

SccMsgDataIsCancelled

typedef struct {
   DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;

Bu yapı iletiyle birlikte SCC_MSG_BACKGROUND_IS_CANCELLED gönderilir. İptal edilen arka plan işleminin kimliğini iletmek için kullanılır.

SccMsgDataOnBeforeGetFile

typedef struct {
   DWORD dwBackgroundOperationID;
   PCSTR szFile;
} SccMsgDataOnBeforeGetFile;

Bu yapı iletiyle birlikte SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE gönderilir. Alınacak dosyanın adını ve alma işlemini yapan arka plan işleminin kimliğini iletmek için kullanılır.

SccMsgDataOnAfterGetFile

typedef struct {
   DWORD dwBackgroundOperationID;
   PCSTR szFile;
   SCCRTN sResult;
} SccMsgDataOnAfterGetFile;

Bu yapı iletiyle birlikte SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE gönderilir. Belirtilen dosyayı alma işleminin sonucunu ve alma işleminin arka plan işleminin kimliğini iletmek için kullanılır. Sonuç olarak neler verileceğine ilişkin SccGet'in dönüş değerlerine bakın.

SccMsgDataOnMessage

typedef struct {
   DWORD dwBackgroundOperationID;
   PCSTR szMessage;
   BOOL bIsError;
} SccMsgDataOnMessage;

Bu yapı iletiyle birlikte SCC_MSG_BACKGROUND_ON_MESSAGE gönderilir. Bir arka plan işleminin geçerli durumunu iletmek için kullanılır. Durum, IDE tarafından görüntülenecek bir dize olarak ifade edilir ve bIsError iletinin önem derecesini belirtir (TRUE hata iletisi için; FALSE uyarı veya bilgilendirme iletisi için). Durumu gönderen arka plan işleminin kimliği de verilir.

Kod örneği

Burada, çağrının LPTEXTOUTPROC yapısının nasıl dökümünün SCC_MSG_BACKGROUND_ON_MESSAGE yapılacağını gösteren, iletiyi göndermek üzere çağrının kısa bir örneği verilmiştir.

LONG SendStatusMessage(
    LPTEXTOUTPROC pTextOutProc,
    DWORD         dwBackgroundID,
    LPCTSTR       pStatusMsg,
    BOOL          bIsError)
{
    SccMsgDataOnMessage msgData = { 0 };
    LONG                result  = 0;

    msgData.dwBackgroundOperationID = dwBackgroundID;
    msgData.szMessage               = pStatusMsg;
    msgData.bIsError                = bIsError;

    result = pTextOutProc(reinterpret_cast<LPCTSTR>(&msgData), SCC_MSG_BACKGROUND_ON_MESSAGE);
    return result;
}

Ayrıca bkz.