Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
DBTools 構造体には MSG_CALLBACK 型の要素がいくつかあります。それらはコールバック関数へのポインターです。
コールバック関数を使用すると、DBTools 関数はオペレーションの制御をユーザーの呼び出し側アプリケーションに戻すことができます。DBTools ライブラリはコールバック関数を使用して、DBTools 関数から、次の 4 つの目的を持ってユーザーに送られたメッセージを処理します。
確認 ユーザーがアクションを確認する必要がある場合に呼び出されます。たとえば、バックアップディレクトリが存在しない場合、ツールライブラリはディレクトリを作成する必要があるか確認を求めます。
エラーメッセージ オペレーション中にディスク容量が足りなくなった場合など、エラーが発生したときにメッセージを処理するために呼び出されます。
情報メッセージ ツールがユーザーにメッセージを表示するときに呼び出されます (アンロード中の現在のテーブル名など)。
ステータス情報 ツールがオペレーションのステータス (テーブルのアンロード処理の進捗率など) を表示するときに呼び出されます。
コールバックルーチンを構造体に直接割り当てることができます。次の文は、バックアップ構造体を使用した例です。
backup_info.errorrtn = (MSG_CALLBACK) MyFunction
MSG_CALLBACK は、SQL Anywhere に付属する dllapi.h ヘッダーファイルに定義されています。ツールルーチンは、呼び出し側アプリケーションにメッセージを付けてコールバックできます。このメッセージは、ウィンドウ環境でも、文字ベースのシステムの標準出力でも、またはそれ以外のユーザーインターフェイスであっても、適切なユーザーインターフェイスに表示されます。
次の確認ルーチンの例では、YES または NO をプロンプトに答えるようユーザーに求め、ユーザーの選択結果を戻します。
extern short _callback ConfirmRtn( char * question ) { int ret = IDNO; if( question != NULL ) { ret = MessageBox( HwndParent, question, "Confirm", MB_ICONEXCLAMATION|MB_YESNO ); } return( ret == IDYES ); }
次はエラーメッセージ処理ルーチンの例です。エラーメッセージをウィンドウに表示します。
extern short _callback ErrorRtn( char * errorstr ) { if( errorstr != NULL ) { MessageBox( HwndParent, errorstr, "Backup Error", MB_ICONSTOP|MB_OK ); } return( 0 ); }
メッセージコールバック関数の一般的な実装では、メッセージを画面に表示します。
extern short _callback MessageRtn( char * messagestr ) { if( messagestr != NULL ) { OutputMessageToWindow( messagestr ); } return( 0 ); }
ステータスコールバックルーチンは、ツールがオペレーションのステータス (テーブルのアンロード処理の進捗率など) を表示する必要がある場合に呼び出されます。一般的な実装では、メッセージを画面に表示するだけです。
extern short _callback StatusRtn( char * statusstr ) { if( statusstr != NULL ) { OutputMessageToWindow( statusstr ); return( 0 ); }