"ソフコン2002 3rd Edition featuring l'agenda"
第8回 起動メニュー

l'agendaのシェルは,スタートメニューなどを持っていない独特なインタフェースを持っている。そのため,ソフトの切り替えにも独自の機能を実装する必要がある。

【国内記事】 2002年1月7日更新


l'agendaのシェル

 l'agenda用として一番考慮すべき点は,やはり前回のフラッシュメモリとRAMの関係なのだが,それ以外にも注意すべき点がある。その中でもシェル関係は,メモリ関係に次いで注意が必要な部分だろう。

 l'agendaのシェルは独特である。電子手帳,あるいはPalmっぽいといってもよい。基本的にはメニュー画面が中心であり,そこからアプリを起動する。アプリを終了するとメニューに戻る。

 PocketPCやPalmSize/PCの場合,Windows伝統のスタートメニューが存在する。どのソフトを起動していてもスタートメニューボタンは必ず表示されているので,ソフトを切り替えやすい。

 ところが,l'agendaの場合スタートメニューが存在しない。そのため,ほかのソフトに切り替えたいと思ったら現在のソフトを終了して,起動メニュー画面に戻る……という方法が考えられる。しかしソフトを切り替えるのにいちいち終了していたら何かと面倒である。

 例えばあるソフトを開いていて,「あ,ここにほかのソフトのデータを貼り付けたい」と思った場合,l'agendaでは次のような一連の操作を行うことになる。

  • いったん起動中のソフトを終了する。

  • 他方のソフトを起動してコピーしたいデータを探し,コピーした後に終了させる。

  • 再度元のソフトを起動し,貼り付けたい位置を探し,貼り付ける。

 これではシングルタスク状態である。

メニューの呼び出し

 実際,l'agenda内蔵ソフトを使ってみると分かるが,簡単にメニューに戻るためのボタンが付いている。これを押すとメニュー画面がアクティブになり,前面に出てくる。このとき内蔵ソフトは終了したわけではなく,起動したままだ(「設定」の「メモリ使用量」の「タスクマネージャ」を見ると起動していることが確認できる)。単にメニュー画面にタスク切り替えしただけである。

 なるほど,これならソフトを終了させたわけではないので,画面はそのままだし,しかもメニュー画面をタップして再度ソフトを起動させた場合にも(既に起動しているので)非常に速く画面が切り替わる。だが,この機能を自分のソフトにつけるにはどのようにしたらよいのだろうか?

 この機能はl'agenda用SDKにAPIとして入っているので簡単に呼び出すことができる。

CoshMainMenuExec(m_hWnd);

 これだけのコードでメニュー画面が前面に出てくる。ファイルの保存場所やレジストリのフラッシュと並んでこのメニュー画面への切り替え機能は,l'agenda対応の必須機能だろう。

 なお,このCoshMainMenuExec関数を使うときには,CGDFlushRegistry関数と同じくCoShellAPI.lib ファイルをリンクしなくてはならない。[プロジェクト]-[設定]の「リンク」で「オブジェクト/ライブラリ モジュール」にCoShellAPI.lib を付け加えよう。


関連記事
▼ Windows CEソフトウェアコンテスト2002 3rd Edition featuring l'agenda開催
▼ 第1回 開発環境を入手しよう!
▼ 第2回 ラジェンダの特徴
▼ 第3回 開発環境のインストール
▼ 第4回 作ったソフトを動かすには?
▼ 第5回 既存ソフトとの切り分け
▼ 第6回 ファイル構造
▼ 第7回 レジストリ

関連リンク
▼ コンテストエントリーページ
▼ 開発者向けラジェンダ開発掲示板
▼ eMbedded Visual Tools 3.0連載記事 - WindowsCE FAN
▼ マイクロソフト Windows Embedded

[古原伸介,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.



モバイルショップ

最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!

最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!