【第2回】
eMbedded Visual-C++3.0を試す1
PocketPC用 AppWizard
(00/10/19)
はじめに
新しく登場する無料の開発環境「eMbedded Visual Tools 3.0」を使って、PocketPC用のソフトを作ってみよう。その際、最初に必要になるのがプロジェクトの新規作成だ。そこでは AppWizard というVisual-C++ではおなじみのWizardを使ってプロジェクトを作り、そしてスケルトン(土台)となるソースファイルが自動的に作成されることになる。
では、PocketPC用のAppWizard、および初期作成されるソースは今までのWindowsCE用とどのように違うのかを見てみよう。
AppWizardの起動
まずはメニューより、[ファイル]-[新規作成]から「プロジェクト」タブを選ぶ。そこには、WindowsCE用のプロジェクトの選択肢がずらりと並んでいる。「eMbedded Visual-C++ 3.0」はWindowsCE専用だから以前と違って通常のWin32用の選択肢は存在しない(作れない)。
以前のToolKitとよく似た選択肢が並ぶ中、下の方に「WCE Pocket PC Application」と「WCE Pocket PC MFC AppWizard(exe)」という新しい選択肢があることに気がつくはずだ。これがPocket PC用のプロジェクトを作るために選ぶプロジェクトである。早速、「WCE Pocket PC MFC AppWizard(exe)」を選択し、プロジェクト名を入力、OKを押す。
Step1
Step1では作成するアプリケーションの種類を選択する。ここで早くも以前との違いに気づく。
「ドキュメントリストのあるSDI」という選択肢がそれである。これはいったい何か。ヘルプを見ても「CCeDocList クラスに基づいたアプリケーションを生成する」としか説明されていない。この CCeDocList というのは新しく追加されたMFCのクラスである。PocketPCをお持ちの方はExcelやWordを起動してほしい。起動すると、最初にファイルを選択する画面が出てくる。これが「ドキュメントリスト」である(PalmSize-PCの手書きメモのファイル一覧に似ている)。この機能をアプリケーションに自動的に組み込むことができるのだ。
Wizardだけでこのドキュメントリスト機能が組み込めるのは、「すごい」と言える。また、このようなWizardがある、ということはPocketPCの標準的なインタフェースとしてドキュメントリストを組み込んで行くことが主流になる、といえるだろう。ファイルを開いてどうこうするような、Document-Viewタイプのアプリケーションはこれをサポートしていくべきだろう
Step2
Step2ではアプリケーションへ組み込み機能を選択する。ここでも新しい機能があるようだ。
「新規共有」という選択肢がそれである。この機能はヘルプによると「ユーザーが他のアプリケーションを開くことができるようにする新しいメニュー スタイルを生成する」とある。PocketPCの場合、現在起動しているソフトに関係なく他のソフトのファイルを新規作成できる。Excelなどを起動すると「New」メニューの右に▲がある。これをクリックすると他のソフトのファイルを新規作成できる(ただし、この機能はオプションでオフにすることもできる)。
「新規共有」をチェックするとこの機能を自動的にアプリケーションに組み込んでくれるのである。。「ドキュメントリストのあるSDI」を選択した場合、ドキュメントリストの画面では「新規共有」が常にサポートされるが、アプリケーションの画面(Viewの画面)ではこのチェックを入れないとサポートされない。あると便利なので、チェックを入れておくべきだろう。それ以外の選択肢だが、コントロールバーのタイプが以前と比べて少ない。また印刷などの選択肢もなくなっている。
Step3
Step3はソースのコメントの有無とMFCライブラリを共有するか、スタティックリンクするか、を選ぶところで、これは以前と変化がないが、上で書いたのドキュメントリストを使う場合にはMFCライブラリは共有するしかないらしい。これはOLE関係を使おうとする場合、共有にしないとMFCは動作しないかららしい。また、現在こちらで試しているToolKitではスタティックリンクするとどのような場合でもコンパイルエラーになってしまった。これは stdafx.h の#include <afxdtctl.h>をコメントアウトするとコンパイルが通るようになる。
ただし、PocketPCはどうもMFCのDLL(mfcce300.dll)が最初からROMに入っているらしい(CASIO E-700とJornada548で確認)。ということはMFCで作るPocketPC用のソフトは共有でかまわない、ということになるだろう。
Step4
Step4はクラスの確認である。これも以前と変化がない。
ちなみにViewの基本クラスの選択肢は、以前と同様であり、CView,CEditView,CFormView,CListView,CScrollView,CTreeViewである。CHtmlViewなんかがほしかったところだが残念ながらサポートされていない。
スケルトンのソースは?
さてこれで土台となるスケルトンソースが作成される。では、そのソースはどのようなものかを見てみよう。まず気がつくのが、CCeDocList 関連である。ドキュメントテンプレートクラスがCSingleDocTemplateではなくCCeDocListDocTemplateになっている。これが起動時のファイル選択画面を出してくれるクラスらしい。
次にツールバー関係だが以下のようになっていた。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
m_wndCommandBar.m_bShowSharedNewButton = TRUE;
m_ToolTipsTable[0] = MakeString(IDS_NEW);
m_ToolTipsTable[1] = MakeString(IDS_FILE);
m_ToolTipsTable[2] = MakeString(IDS_MHELP);
m_ToolTipsTable[3] = MakeString(IDS_CUT);
m_ToolTipsTable[4] = MakeString(IDS_COPY);
m_ToolTipsTable[5] = MakeString(IDS_PASTE);
if(!m_wndCommandBar.Create(this) ||
!m_wndCommandBar.InsertMenuBar(IDR_MAINFRAME) ||
!m_wndCommandBar.AddAdornments() ||
!m_wndCommandBar.LoadToolBar(IDR_MAINFRAME) ||
!m_wndCommandBar.SendMessage(TB_SETTOOLTIPS, (WPARAM)(7), (LPARAM)(m_ToolTipsTable)))
{
TRACE0("Failed to create CommandBar\n");
return -1; // 作成に失敗
}
m_wndCommandBar.SetBarStyle(m_wndCommandBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
return 0;
}
m_wndCommandBar は CCeCommandBarクラス、m_ToolTipsTable はLPTSTRの配列である。どうもツールチップを出すのは面倒そうだ。しかし、意外なことにCommandBar関係は以前と同じように作れそうである。
スケルトンのリソースは?
さて、リソースを見てみよう。まずメニューを見てみる。するとそこでびっくり。下から出てくるところはさすがPocketPCだが、なんとファイルメニューがない。
このあたりは、「普通はドキュメントリストを使え」ということなのだろう。電卓のようにファイルを使わないソフト以外はドキュメントリストがあるのが標準インタフェースになりそうだ。
さいごに
まだよくわからないところが多いが、なかなか興味深い。PocketPCの新しいインタフェースが簡単に利用できるように工夫されているようだ。次回以降は開発の実際をお伝えしていきたい。もし、誤り等がありましたら、是非メールもしくは掲示板にご意見等ください。
関連URL
■感想・コメントは、WindowsCE FAN の掲示板 (BBS)
へお願いします。
|
===更新履歴===
2000/10/19 作成
(古原伸介)