LPTEXTOUTPROC
ユーザーが統合開発環境 (IDE) 内からソース管理操作を実行する場合、ソース管理プラグインでは、操作に関連するエラーまたはステータス メッセージの伝達が必要になることがあります。 このプラグインでは、この目的のために独自のメッセージ ボックスを表示できます。 ただし、よりシームレスな統合のためにプラグインから 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
メッセージの種類。 このパラメーターとしてサポートされる値の一覧を次の表に示します。
Value | 説明 |
---|---|
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;
}