SophiaFramework UNIVERSE 5.3 |
SophiaFramework UNIVERSE プログラムから C 言語用 BREW API を呼び出す方法は以下の通りです。
例 23.1. IShell インターフェースの場合
SFBShellSmp xshell; // IShell インターフェースを管理するスマートポインタ IShell* ishell; // Ishell インターフェース // 方法1 // SFBShell インスタンスを取得する if ((xshell = SFBShell::GetInstance()) != null) { // ishell インターフェースへのポインタを取得する ishell = interface_cast(xshell.Get()); // xshell が有効な間は ishell を利用できる // ishell のスコープは xshell のスコープに依存する } // 方法2 if ((xshell = SFBShell::GetInstance()) != null) { // ishell インターフェースへのポインタを取得する ishell = interface_cast(xshell.Detach()); // ishell の解放権限を xshell から取得する // 開発者が ishell を明示的に解放する ISHELL_Release(ishell); }
例 23.2. IFileMgr インターフェースの場合
SFBShellSmp shell; // IShellインターフェースを管理するスマートポインタ SFBBaseSmp xfilemgr; // IBase インターフェースを管理するスマートポインタ IFileMgr* ifilemgr; // IFileMgr インターフェースのラッパークラス // 方法1 // SFBShell インスタンスを取得します。 if ((shell = SFBShell::GetInstance()) != null) { // IFileMgr インターフェースを作成する if ((xfilemgr = shell->CreateInstance(AEECLSID_FILEMGR)) != null) { // スマートポインタ クラスから // IFileMgr インターフェースへのポインタを取得する ifilemgr = reinterpret_cast<IFileMgr*>(interface_cast(xfilemgr.Get())); // IFileMgr インターフェースを利用する if (IFILEMGR_Test(ifilemgr, "myfile.txt") == SFERR_NO_ERROR) { // ... } // ifilemgr のスコープは xfilemgr のスコープに依存する // スコープを伸ばすには、xfilemgr と ifilemgr をクラス変数にする } } // 方法2 if ((shell = SFBShell::GetInstance()) != null) { // IFileMgr インターフェースを作成する if ((xfilemgr = shell->CreateInstance(AEECLSID_FILEMGR)) != null) { // スマートポインタ クラスから // IFileMgr インターフェースへのポインタを取得する ifilemgr = reinterpret_cast<IFileMgr*>(interface_cast(xfilemgr.Detach())); // IFileMgr インターフェースを利用する if (IFILEMGR_Test(ifilemgr, "myfile.txt") == SFERR_NO_ERROR) { // ... } IFILEMGR_Release(ifilemgr); // ifilemgr のスコープは xfilemgr のスコープに依存しないが、 // ifilemgr は開発者が管理する // IFileMgr インターフェースを利用し終わった時点で // 開発者が ifilemgr を解放する } }
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |