Поделиться через


LPTEXTOUTPROC

Когда пользователь выполняет операцию управления версиями из интегрированной среды разработки (IDE), подключаемый модуль управления версиями может потребовать передачи сообщений об ошибках или состояниях, связанных с операцией. Подключаемый модуль может отображать собственные поля сообщений для этой цели. Однако для более простой интеграции подключаемый модуль может передавать строки в интегрированную среду разработки, которая затем отображает их в собственном способе отображения сведений о состоянии. Механизм для этого является указателем LPTEXTOUTPROC функции. Интегрированная среда разработки реализует эту функцию (описано более подробно ниже) для отображения ошибок и состояния.

Интегрированная среда разработки передает подключаемый модуль управления версиями указатель функции на эту функцию в качестве параметра при вызове lpTextOutProc SccOpenProject. Например, во время операции SCC в середине вызова SccGet с участием многих файлов подключаемый модуль может вызывать LPTEXTOUTPROC функцию, периодически передавая строки для отображения. Интегрированная среда разработки может отображать эти строки в строке состояния, в окне вывода или в отдельном окне сообщения в соответствии с соответствующими параметрами. При необходимости интегрированная среда разработки может отображать определенные сообщения с помощью кнопки "Отмена ". Это позволяет пользователю отменить операцию, и она дает интегрированной среде разработки возможность передавать эти сведения обратно в подключаемый модуль.

Подпись

Выходная функция интегрированной среды разработки имеет следующую сигнатуру:

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 Запрашивает интегрированную среду разработки, если фоновая операция должна быть отменена: интегрированная среда разработки возвращает SCC_MSG_RTN_CANCEL , если операция отменена; в противном случае возвращается SCC_MSG_RTN_OK. Параметр display_string создается как структура SccMsgDataIsCancelled , которая предоставляется подключаемым модулем управления версиями.
SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE Сообщает интегрированной среде разработки о файле перед получением из элемента управления версиями. Параметр display_string создается как структура SccMsgDataOnBeforeGetFile , которая предоставляется подключаемым модулем управления версиями.
SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE Сообщает интегрированной среде разработки о файле после получения из элемента управления версиями. Параметр display_string создается как структура SccMsgDataOnAfterGetFile , которая предоставляется подключаемым модулем управления версиями.
SCC_MSG_BACKGROUND_ON_MESSAGE Сообщает интегрированной среде разработки текущее состояние фоновой операции. Параметр display_string создается как структура SccMsgDataOnMessage , которая предоставляется подключаемым модулем управления версиями.

Возвращаемое значение

значение Описание
SCC_MSG_RTN_OK Строка была отображена или операция успешно завершена.
SCC_MSG_RTN_CANCEL Пользователь хочет отменить операцию.

Пример

Предположим, что интегрированная среда разработки вызывает SccGet с двадцатью именами файлов. Подключаемый модуль управления версиями хочет предотвратить отмену операции в середине файла. После получения каждого файла он вызывает lpTextOutProc, передает сведения о состоянии каждого файла и отправляет SCC_MSG_DOCANCEL сообщение, если оно не имеет состояния в отчет. Если подключаемый модуль в любое время получает возвращаемое значение SCC_MSG_RTN_CANCEL из интегрированной среды разработки, он немедленно отменяет операцию получения, чтобы больше файлов не извлекалось.

Структуры

SccMsgDataIsCancelled

typedef struct {
   DWORD dwBackgroundOperationID;
} SccMsgDataIsCancelled;

Эта структура отправляется с сообщением SCC_MSG_BACKGROUND_IS_CANCELLED . Он используется для передачи идентификатора фоновой операции, отмененной.

SccMsgDataOnBeforeGetFile

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

Эта структура отправляется с сообщением SCC_MSG_BACKGROUND_ON_BEFORE_GET_FILE . Он используется для передачи имени извлекаемого файла и идентификатора фоновой операции, выполняющей извлечение.

SccMsgDataOnAfterGetFile

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

Эта структура отправляется с сообщением SCC_MSG_BACKGROUND_ON_AFTER_GET_FILE . Он используется для обмена данными о результате извлечения указанного файла, а также идентификатора фоновой операции, которая сделала извлечение. Просмотрите возвращаемые значения для SccGet, чтобы узнать, что можно получить в результате.

SccMsgDataOnMessage

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

Эта структура отправляется с сообщением SCC_MSG_BACKGROUND_ON_MESSAGE . Он используется для передачи текущего состояния фоновой операции. Состояние выражается как строка для отображения интегрированной среды разработки и bIsError указывает серьезность сообщения (TRUE для сообщения об ошибке; FALSE для предупреждения или информационного сообщения). Идентификатор фоновой операции отправки состояния также предоставляется.

Пример кода

Ниже приведен краткий пример вызова LPTEXTOUTPROC для отправки SCC_MSG_BACKGROUND_ON_MESSAGE сообщения, в котором показано, как привести структуру для вызова.

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

См. также