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