LPTEXTOUTPROC

Když uživatel spustí operaci správy zdrojového kódu z integrovaného vývojového prostředí (IDE), modul plug-in správy zdrojového kódu může chtít sdělit chybové nebo stavové zprávy související s operací. Modul plug-in může pro tento účel zobrazit vlastní pole zpráv. Pro plynulejší integraci ale modul plug-in může předat řetězce integrovanému vývojovému prostředí (IDE), který je pak zobrazí nativním způsobem zobrazení informací o stavu. Mechanismus je ukazatel LPTEXTOUTPROC funkce. Integrované vývojové prostředí (IDE) implementuje tuto funkci (podrobněji popsáno níže) pro zobrazení chyb a stavu.

Integrované vývojové prostředí (IDE) předá modulu plug-in správy zdrojového kódu ukazatel na tuto funkci jako lpTextOutProc parametr při volání SccOpenProject. Během operace SCC, například uprostřed volání SccGet zahrnující mnoho souborů, může modul plug-in volat LPTEXTOUTPROC funkci a pravidelně předávat řetězce, které se mají zobrazit. Integrované vývojové prostředí (IDE) může tyto řetězce zobrazit na stavovém řádku, ve výstupním okně nebo v samostatném poli zprávy podle potřeby. Volitelně může integrované vývojové prostředí (IDE) zobrazit určité zprávy tlačítkem Zrušit . To uživateli umožní zrušit operaci a dává integrovanému vývojovému prostředí (IDE) možnost předávat tyto informace zpět modulu plug-in.

Podpis

Výstupní funkce integrovaného vývojového prostředí má následující podpis:

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

Parametry

display_string

Textový řetězec, který se má zobrazit. Tento řetězec by neměl být ukončen návratem na začátek řádku ani přímkou řádku.

mesg_type

Typ zprávy. Následující tabulka uvádí podporované hodnoty pro tento parametr.

Hodnota Popis
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR Zpráva se považuje za informace, upozornění nebo chybu.
SCC_MSG_STATUS Zpráva zobrazuje stav a lze ji zobrazit na stavovém řádku.
SCC_MSG_DOCANCEL Odesláno bez řetězce zprávy.
SCC_MSG_STARTCANCEL Začne zobrazovat tlačítko Zrušit .
SCC_MSG_STOPCANCEL Přestane zobrazovat tlačítko Zrušit .
SCC_MSG_BACKGROUND_IS_CANCELLED Zeptá se integrovaného vývojového prostředí (IDE), jestli má být operace na pozadí zrušena: integrované vývojové prostředí (IDE) vrátí SCC_MSG_RTN_CANCEL , pokud byla operace zrušena; v opačném případě vrátí hodnotu SCC_MSG_RTN_OK. Parametr display_string se přetypuje jako struktura SccMsgDataIsCancelled , která je dodávána modulem plug-in správy zdrojového kódu.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE Informuje integrované vývojové prostředí o souboru před načtením ze správy verzí. Parametr display_string se přetypuje jako struktura SccMsgDataOnBeforeGetFile , která je dodávána modulem plug-in správy zdrojového kódu.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE Informuje integrované vývojové prostředí (IDE) o souboru po načtení ze správy verzí. Parametr display_string se přetypuje jako struktura SccMsgDataOnAfterGetFile , která je poskytována modulem plug-in správy zdrojového kódu.
SCC_MSG_BACKGROUND_ON_MESSAGE Informuje integrované vývojové prostředí (IDE) o aktuálním stavu operace na pozadí. Parametr display_string se přetypuje jako struktura SccMsgDataOnMessage , která je dodávána modulem plug-in správy zdrojového kódu.

Vrácená hodnota

Hodnota Popis
SCC_MSG_RTN_OK Byl zobrazen řetězec nebo byla operace úspěšně dokončena.
SCC_MSG_RTN_CANCEL Uživatel chce operaci zrušit.

Příklad

Předpokládejme, že integrované vývojové prostředí volá SccGet s dvaceti názvy souborů. Modul plug-in správy zdrojového kódu chce zabránit zrušení operace uprostřed získání souboru. Po získání každého souboru volá lpTextOutProc, předává informace o stavu každého souboru a odešle SCC_MSG_DOCANCEL zprávu, pokud nemá stav nahlásit. Pokud modul plug-in kdykoli obdrží návratovou hodnotu z integrovaného vývojového SCC_MSG_RTN_CANCEL prostředí (IDE), okamžitě zruší operaci get, aby se nenačetly žádné další soubory.

Struktury

SccMsgDataIsCancelled

typedef struct {
   DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;

Tato struktura se odešle se zprávou SCC_MSG_BACKGROUND_IS_CANCELLED . Slouží ke komunikaci ID operace na pozadí, která byla zrušena.

SccMsgDataOnBeforeGetFile

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

Tato struktura se odešle se zprávou SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE . Slouží ke komunikaci s názvem souboru, který se má načíst, a ID operace na pozadí, která provádí načítání.

SccMsgDataOnAfterGetFile

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

Tato struktura se odešle se zprávou SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE . Slouží ke komunikaci výsledku načtení zadaného souboru a ID operace na pozadí, která načítání provedla. Podívejte se na návratové hodnoty pro SccGet pro to, co se dá dát v důsledku toho.

SccMsgDataOnMessage

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

Tato struktura se odešle se zprávou SCC_MSG_BACKGROUND_ON_MESSAGE . Slouží ke komunikaci aktuálního stavu operace na pozadí. Stav se vyjadřuje jako řetězec, který se má zobrazit v integrovaném vývojovém prostředí (IDE) a bIsError označuje závažnost zprávy (TRUE pro chybovou zprávu, FALSE pro upozornění nebo informační zprávu). Id operace na pozadí, která odesílá stav, je také uveden.

Příklad kódu

Tady je stručný příklad volání LPTEXTOUTPROC k odeslání SCC_MSG_BACKGROUND_ON_MESSAGE zprávy, který ukazuje, jak přetypovat strukturu volání.

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;
}

Viz také