【第3回】
eMbedded Visual-C++3.0を試す2
以前との違い
(00/10/21)
はじめに
「eMbedded Visual Tools 3.0」を使って、PocketPCのソフトを作る場合、以前とどのような違いがあるだろうか? 今回はそこに的を絞って見たい。
exeファイルのコピー先
まず違うのがexeファイルのコピー先である。今まではCEマシンのルートディレクトリにコピーされていた。しかし、PocketPCでは「\windows\スタートメニュー」にコピーされるようだ。これだとスタートメニューから起動できるのでありがたい。しかし、デスクトップから操作するときには少し面倒だ。
非PocketPC用ソフトのコピーに失敗
ターゲットをPocketPC以外(例えば、PalmSize-PC)にしてUSB接続したPocketPCに「リモート出力ファイルの更新」をしようとすると失敗した。PocketPCにはターゲットがPocketPCでないとeMbedded Visual-C++3.0からはコピーできないようだ。この場合、エクスプローラでコピーすれば問題ない。
ダイアログ
AppWizardでスケルトンを作ったら、まずAboutダイアログを出してみよう。画面いっぱいに広がるはずだ。しかし、リソースを見てみるといつものAboutダイアログの大きさである。どうやらPocketPCではリソースでどんなサイズに作っても画面いっぱいにダイアログを出すようになっているらしい。
ClassWizardが作動しない場合も
AppWizardでスケルトンを作ったとき、ClassWizardが起動しない場合がある。これはCMainFrameの宣言が一部誤っているからだ。
// 生成されたメッセージ マップ関数
protected:
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
LPTSTR MakeString(UINT stringID);
LPTSTR m_ToolTipsTable[NUM_TOOL_TIPS];
// メモ - ClassWizard はこの位置にメンバ関数を追加または削除します。
// この位置に生成されるコードを編集しないでください。
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
MakeString関数とm_ToolTipsTableはここではなく、protectedの上に移動させなければならない。具体的には以下のようにしよう。
// 生成されたメッセージ マップ関数
LPTSTR MakeString(UINT stringID);
LPTSTR m_ToolTipsTable[NUM_TOOL_TIPS];
protected:
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
// メモ - ClassWizard はこの位置にメンバ関数を追加または削除します。
// この位置に生成されるコードを編集しないでください。
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
終了処理をつけておこう
AppWizardで作成したMFCのスケルトンをそのままビルドして実行すると、メニューに「終了」が無いのでソフト単体では終了できない。PocketPCはPalmSize-PCと同じくアプリケーション自体に終了機能を付けずに、OSが使われなくなったソフトを自動的に終了するような仕組みになっているからだ。しかし、開発中はこれでは都合が悪いことが多い。一度起動させて不具合が見つかり、修正してビルドし、再度実機にコピーしようとすると、アプリケーションが起動中でコピーできないからだ。
そこで終了メニューをつけておくと便利だろう。適当にメニューを作り、以下のようなコードを書いておけばよい。
AfxGetApp()->m_pMainWnd->SendMessage(WM_CLOSE);
ClassWizardで変数の追加に失敗
ターゲットをPocketPC以外(例えば、PalmSize-PC)にしたとき、ClassWizardを使ってダイアログの変数を追加しようとすると「この種類のコントロールのデータタイプはありません」というエラーが出て、変数が追加できないことがある。これはどうも回避できないようなので、ターゲットをPocketPCにして変数の追加を行った方が良さそうである。
関連URL
■感想・コメントは、WindowsCE FAN の掲示板 (BBS)
へお願いします。
|
===更新履歴===
2000/10/21 作成
2000/11/08 「変数の追加に失敗」を追加
(古原伸介)