다음을 통해 공유


LPTEXTOUTPROC

사용자가 IDE(통합 개발 환경) 내부에서 소스 제어 작업을 실행하는 경우 소스 제어 플러그 인은 작업과 관련된 오류 또는 상태 메시지를 전달할 수 있습니다. 플러그 인은 이 목적을 위해 자체 메시지 상자를 표시할 수 있습니다. 그러나 보다 원활하게 통합할 수 있도록 플러그 인은 문자열을 IDE에 전달한 다음, 상태 정보를 표시하는 기본 방식으로 문자열을 표시할 수 있습니다. 이에 대한 메커니즘은 LPTEXTOUTPROC 함수 포인터입니다. IDE는 오류와 상태를 표시할 수 있도록 이 함수(아래 자세히 설명)를 구현합니다.

IDE는 SccOpenProject를 호출할 때 이 함수에 대한 함수 포인터를 lpTextOutProc 매개 변수로 소스 제어 플러그 인에 전달합니다. 예를 들어 SCC 작업 중에 많은 파일이 포함된 SccGet을 호출하는 동안 플러그 인은 LPTEXTOUTPROC 함수를 호출하여 표시할 문자열을 주기적으로 전달할 수 있습니다. IDE는 상태 표시줄, 출력 창 또는 별도의 메시지 상자에 이러한 문자열을 적절하게 표시할 수 있습니다. 필요한 경우 IDE에서 취소 단추를 사용하여 특정 메시지를 표시할 수 있습니다. 이렇게 하면 사용자가 작업을 취소할 수 있으며 IDE에서 이 정보를 다시 플러그 인에 전달할 수 있습니다.

서명

IDE 출력 함수에는 다음과 같은 서명이 있습니다.

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

매개 변수

display_string

표시할 텍스트 문자열입니다. 이 문자열은 캐리지 리턴이나 줄 바꿈으로 종료되면 안 됩니다.

mesg_type

메시지의 유형입니다. 다음 표에서는 이 매개 변수에 지원되는 값을 나열합니다.

설명
SCC_MSG_INFO, SCC_MSG_WARNING, SCC_MSG_ERROR 메시지는 정보, 경고 또는 오류로 간주됩니다.
SCC_MSG_STATUS 메시지는 상태를 보여 주며 상태 표시줄에 표시될 수 있습니다.
SCC_MSG_DOCANCEL 메시지 문자열 없이 전송됩니다.
SCC_MSG_STARTCANCEL 취소 단추 표시를 시작합니다.
SCC_MSG_STOPCANCEL 취소 단추 표시를 중지합니다.
SCC_MSG_BACKGROUND_IS_CANCELLED 백그라운드 작업을 취소할지 여부를 IDE에 묻습니다. 작업이 취소되면 IDE에서 SCC_MSG_RTN_CANCEL을 반환하고 그렇지 않으면 SCC_MSG_RTN_OK를 반환합니다. display_string 매개 변수는 소스 제어 플러그 인에서 제공하는 SccMsgDataIsCancelled 구조체로 캐스팅됩니다.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE 버전 제어에서 파일을 검색하기 전에 IDE에 파일을 알려줍니다. display_string 매개 변수는 소스 제어 플러그 인에서 제공하는 SccMsgDataOnBeforeGetFile 구조체로 캐스팅됩니다.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE 버전 제어에서 파일을 검색한 후에 IDE에 파일을 알려줍니다. display_string 매개 변수는 소스 제어 플러그 인에서 제공하는 SccMsgDataOnAfterGetFile 구조체로 캐스팅됩니다.
SCC_MSG_BACKGROUND_ON_MESSAGE 백그라운드 작업의 현재 상태를 IDE에 알려줍니다. display_string 매개 변수는 소스 제어 플러그 인에서 제공하는 SccMsgDataOnMessage 구조체로 캐스팅됩니다.

반환 값

설명
SCC_MSG_RTN_OK 문자열이 표시되었거나 작업이 성공적으로 완료되었습니다.
SCC_MSG_RTN_CANCEL 사용자가 작업을 취소하려고 합니다.

예시

IDE에서 파일 이름 20개로 SccGet을 호출한다고 가정합니다. 소스 제어 플러그 인은 파일 가져오기 중에 작업을 취소하지 않도록 합니다. 각 파일을 가져오면 각 파일에 대한 상태 정보를 전달하여 lpTextOutProc을 호출하고 보고할 상태가 없으면 SCC_MSG_DOCANCEL 메시지를 보냅니다. 언제든지 플러그 인이 IDE에서 반환 값 SCC_MSG_RTN_CANCEL을 받으면 가져오기 작업을 즉시 취소하므로 파일이 더 이상 검색되지 않습니다.

구조

SccMsgDataIsCancelled

typedef struct {
   DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;

이 구조체는 SCC_MSG_BACKGROUND_IS_CANCELLED 메시지와 함께 전송됩니다. 취소된 백그라운드 작업의 ID를 전달하는 데 사용됩니다.

SccMsgDataOnBeforeGetFile

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

이 구조체는 SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE 메시지와 함께 전송됩니다. 검색할 파일의 이름과 검색을 수행하는 백그라운드 작업의 ID를 전달하는 데 사용됩니다.

SccMsgDataOnAfterGetFile

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

이 구조체는 SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE 메시지와 함께 전송됩니다. 지정된 파일의 검색 결과와 검색을 수행한 백그라운드 작업의 ID를 전달하는 데 사용됩니다. 결과로 제공될 수 있는 항목은 SccGet 반환 값을 참조하세요.

SccMsgDataOnMessage

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

이 구조체는 SCC_MSG_BACKGROUND_ON_MESSAGE 메시지와 함께 전송됩니다. 백그라운드 작업의 현재 상태를 전달하는 데 사용됩니다. 상태는 IDE에서 표시할 문자열로 표현되며 bIsError는 메시지의 심각도를 나타냅니다(오류 메시지의 경우 TRUE, 경고나 정보 메시지의 경우 FALSE). 상태를 보내는 백그라운드 작업의 ID도 제공됩니다.

코드 예

다음은 호출할 구조체를 캐스팅하는 방법을 보여 주는 SCC_MSG_BACKGROUND_ON_MESSAGE 메시지를 전송하도록 LPTEXTOUTPROC을 호출하는 간단한 예제입니다.

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

참고 항목