![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
BREW インターフェース ラッパーで使用するコールバック関数は、独自に宣言・実装・登録する必要があります。
以下のサンプル コードのように、ダミーのコールバック関数を経由して、実際のコールバック関数を呼び出します。
![]() |
コールバック関数を登録する関数のプロトタイプ |
|---|---|
コールバック関数を登録する関数のプロトタイプは、BREW インターフェース ラッパーによって異なります。 | |
詳細情報 : 「 BREW API リファレンス 」
例 22.6. SFBCamera クラスのコールバック関数の宣言・実装・登録
SFMTYPEDEFCLASS(Camera)
class Camera {
SFMSEALCOPY(Camera)
private:
SFBCameraSmp _camera; // ICamera インターフェースのラッパークラス
public:
SFCError Resume(Void); // レジューム処理
static Void OnCameraSHP(VoidPtr reference, AEECameraNotify* notify); // ダミーのコールバック関数
Void OnCamera(AEECameraNotify* notify); // 実際のコールバック関数
};
#endif
// レジューム処理: カメラの基本的な初期化処理
SFCError Camera::Resume(Void)
{
SFCError error(SFERR_NO_ERROR);
// カメラのインスタンスを取得する
if ((_camera = SFBCamera::NewInstance()) != null) {
// ダミーのコールバック関数を登録する
error = _camera->RegisterNotify(OnCameraSHP, this);
if (error == SFERR_NO_ERROR) {
...
}
// カメラのインスタンスを取得できなかった場合
} else {
error = SFERR_NO_MEMORY;
}
if (error != SFERR_NO_ERROR) {
// エラー処理
}
return error;
}
// ダミーのコールバック関数
Void Camera::OnCameraSHP(VoidPtr reference, AEECameraNotify* notify)
{
// 実際のコールバック関数を呼び出す
static_cast<CameraPtr>(reference)->OnCamera(notify);
return;
}
// 実際のコールバック関数
Void Camera::OnCamera(AEECameraNotify* notify)
{
switch (notify->nStatus) {
case CAM_STATUS_START: // カメラの起動が完了したとき
...
break;
case CAM_STATUS_FRAME: // 新たなフレームを取得したとき
...
break;
case CAM_STATUS_DONE: // 処理が完了したとき
...
break;
case CAM_STATUS_FAIL: // 処理が失敗したとき
...
break;
case CAM_STATUS_ABORT: // 処理を中止したとき
...
break;
}
return;
}
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|