2006年02月11日

RクラスとMクラス

Rクラス

 Rクラスはシステムリソースを利用するためのクラスになります。SymbianはマイクロカーネルOSですから、システムリソースはサーバアプリケーション(ネットワーク上でのサーバではないことに注意してください)から提供されます。そして、このRクラスがシステムリソースを操作/利用する際のインターフェースになります。従って、通常のクラスとは異なり生成と破棄の方法が異なります。

タイマを使ったサンプル

 ここでサンプルを見てみましょう(RTimerTest.zip)。

ビルド方法:RTimerTest.zipを展開していただくと、次のようなディレクトリ構造になっています。


この中のgroupディレクトリに移動して、
> bldmake bldfiles
> abld build [wins|winscw] udeb

とコマンドを発行してください。winsとwinscwはダウンロードしたSDKにあわせて選択してください。

その後は[スタート]→[全てのプログラム]→[Series60 Developer Tool]から[Emulator (Debug)]を選択してください。

エミュレータを起動した後は


のアイコンを探して、プログラムを起動します。

 このサンプルを起動すると、次のような画面になります。
次に、「オプション」のメニューから「カウント」を選びます。


 すると、次の画面のように右上で5回、カウントを行います。


タイマを使ったサンプルの解説
サンプル1では、Rクラス(つまりOSのサービス)を利用しています。実際に利用している箇所はCRTimerTestContainerクラスのcountというメンバ関数です。
#include
void CRTimerTestContainer::count(){
RTimer timer;
if (KErrNone == timer.CreateLocal())
{
TRequestStatus status;
const TTimeIntervalMicroSeconds32 KTimerInterval = 1000000;
// 一秒間隔でラベルの書き換え
TBuf<8> text;
for( int i = 0 ; i < 5 ; i++ )
{
_LIT(KCount, "Count:%d");
text.Format(KCount, i+1);
CEikonEnv::Static()->InfoMsg(text);
// 文字列のセットと書き込み

timer.After(status, KTimerInterval); // タイマーを開始し
User::WaitForRequest(status); // タイマーの終了を待つ
}
timer.Close(); // timerリソースのクローズ(1)
}
}
ここで重要な点は、RクラスはClose()関数(コメント(1)で書いてある箇所など)で、必ず終了処理を行う必要がある点です。通常のデストラクタ以外に処理が必要です。

Mクラス

 Mクラスは「純粋仮想関数のみを提供するクラス」であり、APIなどに関数等の名前解決を提供するクラスになります。換言すれば、Javaのインターフェースとほぼ同じ役割を持ちます。Mクラスに関しては、後の連載で出てくるサンプルで確認していきたいと思います。
posted by シンビアン at 09:15| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/13124552

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。