次の方法で共有


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

関連項目