Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Когда пользователь выполняет операцию управления версиями из интегрированной среды разработки (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;
}