参考になるでしよう。一度目を通しておく ことをお薦めします。 便利なツールが多いので , いくつか紹介 C を接続した状態で使用します。 機または母艦などと呼ばれる ) と palm - sizep ndowsCE サービスのように開発環境 PC ( 親 ールが同梱されています。基本的には , Wi CE TooIkit には , いくつものリモートッ CE To kit に含まれる開発ツール ・リモートスパイ していきましよう。 54 C MAGAZINE 2000 9 可能です。 プログラミングと同様なプログラミングが 前述したように Windows CE は Win32 文字列の扱い ~ Unicode 対応 などが可能です ( Fig. 2 ) 。 プロセスの確認やメモリ領域の使用確認 ・リモートプロセスビューワ どを確認できます (Fig. 1 ) 。 ヒープ ID や現在のヒープのフラグ状態な ・リモートヒープウォーカー 糺 ) などの移動や作成などが可能です。 データベース ( スケジュール , アドレス , U ・リモートオブジェクトビューワ キャプチャがほしい場合などに有効です。 取り込むツールです。 HELP の作成で画面 PaIm-size PC の画面イメージをそのまま ・リモートズームイン 応しています。 ミュレーションモードの仮想マシンにも対 です。実際の Palm-size PC だけでなく , 工 リモートに対応したレジストリエデイタ ・リモートレジストリエデイタ などに使用されます。 ジの流れ , ウインドウスタイルなどの確認 のツールです。 Palm-size PC の各メッセー いわゆる Win32 で利用するスパイと同様 ただし , 一点だけ注意する部分がありま す。扱う文字列がすべて Unicode を使用し ているので , プログラム側も対応しなくて はならないということです。 具体的には , Windows 95 / 98 の MBCS で は 8 ビット単位で文字列を操作していると ころを , Unicode は 16 ビット単位で文字を 表しています。すべて 2 倍のサイズになる TabIe 2 CE Too ⅸ it 付属サンプルアプリケーション ということは注意が必要でしよう。また 文字列の終端も違います。 MBCS は NULL で文字列終端になりますが , Unicode の場 合は NULL がふたっ並んだときに文字列の Unicode を扱うにあたって , それに対応 Unicode での問題点 終端となります。 CMDBAR CNXNOTIF COPYFILT CTLPNL DBVI EW ETCHA GENER ℃ HTMLVIEW HWXPAD PLATNAME RAPI REGISTRY REVERSI SPINTEST SVCSAMPL TREED 旧 commctrl でのコマンドバーの使い方の例を示す COM を初期化し , ハンドへルド PC 接続マネージャに登録する 現在接続されているハンドへルド PC に関する , セットアッププログラムに役立つ情報を 手書き文字認識 A 曰の例を示す ユーザが HTML ヘルプ (. htp ) ファイルを開き , プラウズできるようにする 一般的な Windows CE アプリケーション 簡単なドローイングプログラム データベースビューワ ' back ⅱ te. cp 「を作成するためのサンプルコントロールバネ丿レ 八ンドへルド PC とデスクトップ間でのファイルフィルタの作成と登録の例を示す トロールクラスの作成方法 Windows グラフィックゲーム プルがある 日 A 曰サンプル集 取得する方法を示す DLL レジストリブラウザ。ローカルとリモートのブラウジングをサポートするふたつのサン DLL 工ントリポイントの使い方を示し , S 曰 NTEST. EXE とともに使用するカスタムコン Windows CE 受信トレイと併用するトランスポートサービス DLL を実装 ツリーコントロールと FindFi 「 st Fig. 1 リモートヒープウォーカー ま Windows OE Remote Heap walker ーヒー ) ・リスト : explorer-exe ) セス ID=4CF58CBE に一 ... 同ロ ' ファイル ( 日表示ウインドウ迎ヘルフ。 ( 旦 ) ヒフ・リスト : eX可0化「 . exe フセス ID=4CF58CBE にア ID ニ 01 FEDDEO 住ロロ Ox 凹 04 00 0x 04 14 Ox 0400 Ox 0400A8 Ox 04g00 Ox 0400D8 Ox 0400F0 0X0 凹 40134 Ox 040164 ーフ。 ID 0X01 FEDDEO 0X01 FEDDEO 0X01 FEDDEO 0X000798D4 0X0008 日 EF4 0X000750 日 4 0X01 FEDDEO 0X01 FEDDEO 0X01 FEDDEO しディ 20 124 24 24 68 48 48 AO フ第セス 0xOOF F A25 E OxOOF8909E OxOOF E FCY2 0X00F E F092 0X00FEF092 0x0CFE FC92 0X60F074 日 6 0XOCF4646 A Ox4CF580BE n 、′つ 0 「 nA f ilesys. exe gwes. exe device.exe device.exe device. exe device. . pmn. exe voicstub. exe explorer.exe F Ⅸ Flxed Fixed Fixed Fixed Fixed Flxed Fixed Flxed フラゲ u 「 0 つ 0 C い一 T HF32_DEFAULT HFQ_DEFAULT HF32_DEFAULT HFQ_DEFAULT HF32_DEFAULT HF32_DEFALlLT 続ントルド、第 0 イ絵準のテ・イス )
P m PC 編 Windows CE + Windows CE TO olkit PaIm-size PC の開発環境 Palm-size PC の OS は Windows CE Ver. 2.11 です。つまり , Palm-size PC のアプリケ ーションは Windows CE アプリケーション であり , 広い意味での Win32 アプリケーシ ョンです。このため , Windows のプログラ ミング経験があれば , 違和感なく開発がで きます。実際には Win32 といえど利用でき る API に多少制限がありますが , 基本的に ほとんどの API が利用できるうえ , MFC を 利用する開発方法も可能です。今回は VisuaI C + + ( 以下 VC + + ) を使いますが , それ 以外にⅥ sual Basic での開発も容易です。 バージョンによる違い Windows CE は英語版 Ver. 1.0 から始まり , Ver. 1.01 日本語版 , Ver. 2.0 日英版 , そし て Ver. 2.11 や Ver. 3.0 など , いろいろなバー ジョンが存在しています。 Ver. 2.0 以降は API もかなり増え , MFC や ATL を使った開 発もできるようになりました。 開発環境もそれに合わせて強化され , リ モートツールの強化はもとより , 工ミュレ ーションモードは Ver. 2.0 からサポートされ た 640X480 ドットや 800X600 ドット表示 , ま たカラー画面などがサポートされるように なりました。 今回は HandheId PC については触れない ので , 記事中の W1ndowsCE についての記 述は Palm-size PC を指すこととします。 Windows CE T00 旧 t これら Wmdows CE の開発環境は , Wmd ows CE Toolkit for VrsuaI C + + ( 以下 CE T001 kit) または Wrndows CE Toolkit for Visual B asic にて行います。また , さらに Windows CE プラットホーム SDK というのがマイクロ ソフトより公開されていて (http: 〃 www.asi a.microsoft.com/japan/windowsce/cetools /downloads/devkits. htm) , 各種ドキュメン トやヘッダファイルなどを強化することが できます。 今回は , CEToolkit をベースに解説しま す。これはその名が示すように VC + + のアド オンとして動作し , VC + + 6.0 に対応してい ます。 CE T00 賑 it の入手 CETooIkit は , 以前のバージョンまでは マイクロソフトからの直販のみでした。で すが , Ver. 2.0 以降より店頭での販売も行っ 必要な環境 きるでしよう。 ーザにとって開発を身近に感じることがで って見られるため安心感も大きく , 一般ユ ています ( 推定小売価格 27 , 800 円 ) 。手にと TabIe 1 CETm 蹴の動作環境 というツールの性質上 , 完全にメモリマッ の動作環境の都合からです。工ミュレータ のひとつである W1dnowsCE 工ミュレータ T のみとなっていますが , これは付属ツール 成を要求しています。動作 OS は W1ndows N この CEToolkit は , TabIe 1 のシステム構 特集 2 PDA プロクラミン % プがシステムとは別に確保できる W1ndow sNT のほうが安定するのです。 といっても , 実際にコンパイルやビルド を行うぶんには Windows 95 / 98 でも問題あ りません。ただし , 上記の Windows CE 工 ミュレータは動作しないので , デバッグは 接続した本体上で直接行う必要がありま す。このとき , 場合によっては本体のフル リセットなども考えられます。 当然ながら , Wrndows 95 / 98 環境での開 発はマイクロソフトはまったく保証してい ません。注意してください。 ちなみに Windows 2000 での開発も Wind ows 95 / 98 と同じようにエミュレーション を除く状態で可能となっています。 インストールと サンプルプログラム CETooIkit のインストールには , 製品 CD- ROM の VCCE ディレクトリにある SLTUP を 起動します。インストールがひととおり終 わったあと , 引き続きファイル転送や本体 間通信のための Windows CE サービスのイ ンストールが始まります。注意すべきは , CE Toolkit は VC + + のアドオンなので , V1suaI studio のインストール後にこれらの作業を 行う必要があることです。 すでに本体を持っていて , WmdowsCE サービスをインストール済みという場合は , 当然あらためてインストールする必要はあ りません。 インストールが終わると , ツールやサン プルアプリケーションが利用できるように なります。 TabIe 2 に , CE TooIkit に付属す るサンプルアプリケーションをあげておき ます。これらのサンプルアプリケーション は , Windows CE 独自の API の利用方法の OS VC CPU メモリ H DD C 日 OM マウス モニタ Wndows NTVe 「 . 4.0 Vlsua ℃ + + 6.0 ProfessionaI 版以上 lntel 48 タ MH 夏上 24M バイト L) 廴ヒ ( 筆主 : 32M バイト必厠 28M バイト以上推奨 特集 2 携帯端末を使いこなす PDA プログラミングのコツ 53 VGA カそれと同等以上の解像度 マイクロソフトマウスか , それに相当するポインティングテパイス マルチメディア PC 仕様に適合する C 日 OM ドライブ
特集 2 PDA プロクラミン % コツ した I を使うように対応すれば , 基本的 に問題ありません。 こでひとつ問題になる点があ しかし , ります。 Windows CE には RAPI という機能 があり , これによってデスクトッブマシン から PaIm-size PC 本体にアクセス , 各種制 御を行うことができます。デスクトッブマ シンのみ , または WindowsCE マシンのみ で動作するプログラムではあまり問題にな らないのですが , 今回のようにデスクトッ プからアクセスする場合 , 扱う文字コード が問題になってくるのです。 Palm-size PC がサポートする文字コード は Unicode のみですが , Windows 95 では Un それでは , 実際の生成手順を見てみます。 では , サンプルを見てみましよう。これ icode はサポートされていません。そこで , は , 単純に画面に文字列を表示するコーデ 1 ) ファイルメニューから新規作成を選択 文字列の扱いには変換ルーチンが必須にな Fig. 3 のようなプロジェクト新規作成画 ってきます。 イング例です。 List 4 が TEXT マクロを利用した場合です。 面が開きます。 Unicode を意識したコーディング 2 ) 左側のリスト画面から「 WCE Applicatio それに対して , List 5 の DrawText 関数では TEXT マクロを利用していませんこの場合 , n 」を選択 それでは , 具体的にどのような点を注意 3 ) プロジェクト名 ( N ) および位置 ( C ) を入力 すればいいのでしようか。ざっと列挙して コンパイル時点でエラーとなってしまいま これはプロジェクトの保存場所を指定し す。単純に " " でくくっているだけでは NG と みましよう。 ています。おのおのの環境に合わせて記述 ・文字型は TCHAR で宣言する (List 1 ) なることを理解しておきましよう。 してください。ここでは TESTI と指定して ・文字列定義では TEXT マクロを使う (List ウイザードによるテンプレート います。 2 ) 4 ) プラットホーム ( P) のリストボックス画 さて , 実際にアプリケーションを作って ・ sizeof なども sizeof(TCHAR) とする (List みましよう。 Palm OS の CWfor Palm ではプ 面で対象 CPU を選択 3 ) こで , SH3 系 , MIPS 系など対象 Palm - ロジェクトを作成するときに自動的にテン ・文字列操作関数 strlen などを利用す size PC で搭載されている CPU を選択します。 プレートを作成しました。 CETooIkit では , る 5 ) アプリケーションの種類を選択 ウイザードを利用してテンプレートを作成 します。目的に合わせて自作のテンプレー Fig. 4 のウイザードが表示され , 次の二 つの選択肢が選べるようになります。 トを用意することもできますが , ウイザー ・空のアプリケーションプロジェクト ドに任せて自動生成してみてもいいでしょ ・単純なアプリケーションプロジェクト sizeof なども sizeof(TCHAR) とする Fig. 2 リモートプロセスビューワ ファイル 0 表示ヘルフ。凹 へ。ース先川第 . スいト澂 カセス フセス ID OOFFA25E 3 filesys. exe 3 OC 下 09E device. exe OOFEFO 3 60F074 3 atokpm. exe 3 ) F4646A voicstlb.exe 40F580BE 3 e浦ⅸ等 . exe m, F4 「旧 2 ル ey 角 同ロ ・ . Windows CE Re mote Process Viewer へ。ースアルス アクセスキー ウイントカ 040 0 D00 凹凹 2 0 矼 )OI : 税 0 0 ] 浦 4 OA : 0 凹 10 ATOKPTRA... 〔圓 20 Vo ℃ e マイハンドト、 - 0 〕朝〕 40 1 「『『介 111 Renll 噸 ] 1 -1 ー 4 、ト第ス ID EOFFBFE2 ECFFBFE2 ECFFBFE2 EOFFBFE2 ー FFA856 朝 3FFA 鮖 2 ECFFAD46 EOFFBEE2 、ル iD c 総訓 . dll EFFB598 1 ス FFFFFFFF FFFFFFFF 3 7 2 1 01F 別朝 ) ] 四 1840 80FF85 \ W ⅳ ows... ンヘル PC のテ 101 •st 文字型は TCHA 日で宣言する TCHAR szAppName[301 = TEXT()C MAGAZINE sample"); TCHAR szBuff[201; 1 1 List 3 List 2 文字列定義では TEXT マクロを使う MF—ENABLED ー MF_STRING,IDM_TEST2,TEXT( を 2 を ) MessageBox(hwnd, TEXT("Select TEST2"),szAppName,MB_OK); of. nMaxFile = sizeof(szFileName)/sizeof(TCHAR); List 4 List 5 TEXT マクロを使わない D 「 awText 関数 TEXT マクロの利用例 rect.top 十 = CommandBar—Height(GetDlgItem (hvnd, 1 ) Dravrext(hdc, 'Hello Windows CE!", -1 , &rect, D で一 C 風打新コー VC 風駅コ DT—SINGLELINE); ætClientRect (hvnd, & て ect rect.top 十 = CommandBar—Height(ætDlgItem (hwnd, 1 ) hdc = Beginpaint(hwnd, &PS); DravText(hdc, TEXT("HellO Windows CE! ICOD ) , DT - C 風打新、一 DT—VCENTERI - SING し E い覊 PDA プログラミングのコツ 55 特集 2 携帯端末を使いこなす
第 8 回 0 / いノノミ / ノ 1 ' ロ王 BorIand C + + CompiIer 5 Q&A 集 ( 3 ) -DWlNVER=0x0400; WlN32 WINNT Borland C + + Compiler 5.5 ( 以 次のようオ元ンプレートを使 = 0X0400 下 BCC55) では , コンストラクタを直 を追加してください。また , 必要に応じて , って関数を定義す化ふたつの引数の 接呼び出すことはできないのですか ? 型が異なる場合 ( i 叱 long など ) にエラ この指定を BCC32 のコンフィギュレーショ ーになってしまいます。 ンファイル (BCC32. CFG) に追加しておく 処理系によっては , List 1 のよう とよいでしよう。 template く cl T> な書き方を認めているものもあり Tmax(Ta, (b){return a>b ? a:b;} Windows アプリケーションや ますが , ANSI C + + ではコンストラクタの 直接呼び出しは認められていません。前回 DLL を作成する際に , WinMain や DllEn テンプレートでは , 関数引数やク tryPoint (List 2 ) を記述しますが , 使わ で紹介した new 演算子の配置構文を使って ラスのコンストラクタの場合と異 ない引数に対する警告を抑止すること なり , 暗黙の型変拠は行われません。この オーバロードしてください。 はできないのでしようか。 ため , 型が完全に一致しない場合にはテン リソースファイルを含むプロ プレートが適用されません。このときは , 「 i グラムをコンパイルしようとしたとこ ntmax(inta, intb); 」のように明示的な型宣 関数引数を使わないことがわか ろ , winresrc. h のコンパイル中にエラ っている場合は , 関数の直前に「 # 言を行うことで , 型変換が行われます。 ーが発生しました。 pragma argsused 」という指令を追加して おきます。これにより , 「パラメータ x は コンパイラとは別にリンカを 起動したい場合 , どのようなオプショ 一度も使用されない」という警告を抑止で このファイルでインクルードされ ンを指定すればよいでしようか。 きます。これは , 「 #pragma 叩ⅱ on -w-aus 」 ている winnt. rh , winuser. rh , com mctrl. rh , dde. rh は「 Borland C + + Compiler に似ていますが , 「 #pragma argsused 」は直 5.5 Supplement Pack 」に含まれています 後の関数だけに有効です。 リンカ (ILINK32) が要求するライ A6 ( 本誌の付録 CD - ROM に収録 ) 。 また , C + + プログラムでは , List 3 のよう プラリは , 本誌 7 月号をご覧くだ に引数の宣言を型名だけにし , 仮引数名を さい。また , リンカに渡す主要なオプショ 「 as. h で定義されている RASC 与えないようにすることもできます。 ンは Table 1 のとおりです。 ( 魔夜隆史 ) ONN 構造体を使おうとしたのですが , コンストラクタの明示的な呼び出し WinMain/DIIEntryPoint の宣 期待どおりに動作しません。 土 n に PASCAL WinMain(HINSTANCE hlnstance, #include く s セ d 土 0. h> HINSTANCE hPreV1nstance , BCC55 には , マイクロソフトより class A { LPSTR lpCmdLine , int nCmdShow); public: ライセンス提供されている Windo A(void) { printf("A: :A(void)%n" BmL WINAPI DllEntryPoint(HINSTANCE hlnstance, DWORD fdwRreason, ws 2000 対応の PIa orm SDK が含まれてい LPVOID plVReserved) ・ ます。ここで , Windows のバージョンを示 す WINVER マクロは , デフォルトの値とし て 0X0500 (Windows 2000 ) に定義されてい ます。 API で使われる構造体には Windows 2000 に対応した新しいメンバが追加され TabIe 1 リンカの主要なオプション ているものがあるため , こうしたものでは 作成したアプリケーションが Windows9x / Windows の . EXE を作成する NT では利用できないことになります。 Windows の . DLL を作成する Windows / NT で利用できるアプリケー Windows アプリケーションを作成する ションを作成するためには , コマンドライ デバイスドライバを作成する コンソールアプリケーションを作成する ンオプションで , List 2 List 1 void func ( char *p ) 型名だけの宣言 List 3 int P*R-AL Wi&in(HINSTAE,HINSTA2CE, I ・ pm, int); も WINAPI DIImtryPoint(HINSTAbCE, の LPVOID); 内容 オプション -Tpe -Tpd -a d プログラミング相談室 81
・標準的な He WorId アプリケーション プロジェクト こでは , 前章の PalmOS 編と比較しや すくするため , 3 番目の「標準的な He110W0r1 d アプリケーション」を選択します。 6 ) ボタンをクリック ボタンをクリックすると , 指定した フォルダ内に自動的にソースコード , ースファイルなどが作成されます (Fig. 5 ) 。 7 ) プロジェクトメニューからビルドを選 択 実際にビルドを行い , 実行ファイルを作 成してみましよう。とくに意識しない場合 , デバッグモードでの実行ファイルができて いるはずです。 実際にはこの段階でエミュレータを実行 し , そのなかでデバッグを繰り返します。 最終的にエミュレーションで動作可能にな ったら , Windows CE マシンへ転送し , 再 度動作の確認を行います ( Fig. 6 ) 。 Fig. 3 プロジェクト新規作成画面 新規作成 方イ加シ。班ーワスへ・一スーその他のドもルト ソースコードの説明 W1ndows CE の場合もそのコーディング スタイルは palm OS と同様にイベントドリ プン形式になっています。 では , 生成されたソースコードを見てみ ましよう (List 6 ) 。このリストより , 1 ) ウインドウの登録 2 ) ウインドウの初期化 3 ) ウインドウの作成 4 ) イベントハンドラのためのプロシージ ャ作成 という処理の流れが見てとれるかと思いま す。 Windows メッセージの流れ Windows はイベントドリプン方式のため , メッセージの流れを理解するとコーディン グ作業が簡単になります。それでは , 実際 の Wmdows のメッセージはどのようになっ ているのでしようか ? Windows のシステムと各アプリケーショ ンの間には , メッセージキューというもの が存在し , アプリケーションやシステムが 発生する各種メッセージを制御 , 分配して います。また , このメッセージキューはア プリケーションで発生するイベントも当然 管理するので , アプリケーションのキーポ ードメッセージやマウスメッセージなども 蓄積していきます。 たとえば , マウスをクリックしたときの メッセージは , a) マウスポタンがクリックされたという 情報 b) マウスの右または左ボタンがクリック されたという情報 c ) 画面上のどの場所でクリックされたと いう情報 というように複数の情報を持ってシステ ムキューに入っていくのです。 Fig. 5 ウイザードによる自動生成 にカイル ( 編集 ( 砂表示物入カシトのビルド⑧少ールウインア [ tt : 、い 0 川月 れ : S11 ー M “諸 0S0 Ⅵ、り a ー C ・・ 同ロ、 ATL COM pWi に d Cbster Typ Wtzard 0 」引 om AppWiWd め Ad-in 夥に第 d Extended cc に d EA 円 E 対・ⅸー WR&d M*efile MFC れを 0 辷鬱 d ZMFC 夥に第 d tdll) MFC W 辷第 d 'xe) ー lJti11ty P 「 0 物 3E ATL COM AppWrard 薊既モ「 m に - [ 献 [ 鬱 y ・モ MFC t Ⅳ eXOon 0 に d 、フト名 引 1 WE MFC 再ØW 迂 d 0 ・ MFC bpW 辷 d €xe) 司物 OES ね廳 国 W ト t 新 Wi 『越 C•湾 0 再雇加 、 WnQ 0 尹沼 m ← [ し鬱 y Wi 了 QS にしを y 物データヾース ) シ・エ外 . 新規テ・一・一スウィサ・一ド 位置 0 OK 3Wtn32 ぐ物 OE MIPSFP) ⅵⅣ OWE Ⅶ ) フラットフゎムの 0 観在のワラい 0 トス 0 加、を 新スへなスを作成 (B) 1 ・ H/POVer 2 圓 べて ーハメンハ .WinMain 第 2 E S 地 3 丿ーンヨノ ) 工ノ ワ - りス、・ - ス・ををド を“い万 をい . をい . 白 ー物・鹵 fx. h ・ く c ーレに 。鹵日齷ユ 2S1 局 1 / グローバル変苡 : ー 1 礰工 h : ″現在のインスタンス 〃コマンドバーハンドル , / このコードモジュールに吉まれる関数の前亶ま : めを t 町 Cla ” ( T hlns い「 , LPTSTR 3 ⅳ ) : ーⅲ tlns いを ( Ⅲ T 購工 , ⅲい : え T C L を「 T C 報 . L : ま : ・ 0 し , 駅態 , [ P ) : 0 徹し UINT, 駅を LPRX); アプリケーション選択画面 WCE Application ーステ ? ア 1 / 1 気ロ int 艷叮響 i 「物 ( 用覊 1 E hlns い HI'STA'& r ーい「も LPTSTR ー物引」 2. トー WO He WorId サンプルの実行画面 testl 、 6 列 成する・蘿。アクンの種甌を選ノてく 0 釋準自サょ ' すはをカッケーン ー 0 単純な in 加物 CE アクン Fig. 6 56 C MAGAZINE く戻る⑧ 2 0 9
MONTHLY HEADLINE T 叩 ic VisuaI Stud NET の詳細が公開される このなかにはガべージコレクタやセキ のための機能が提供される。本誌で何度 米国で行われた PDC の発表を受け , 日 かお伝えしている WebForms も . NET Fra 本でも Microsoft. NET に関する説明会が ュリティ , クラスをロードしたり配置を 行われた。このうち Visual Studio の次期 行う機能も含まれる。 mework の一機能となる。 バーションである Visu Studio. NET に Common Language Runtime ではガべ Common Language Runtime は . NET Framework と呼ばれるクラスライブラリ 関してお伝えする。 ージコレクタなどメモリ管理機能が提供 VisuaI Studio. NET で作られるプログ によって利用できる。 COM べースで機 されているが , それらの機能を使う C + + 「 Managed Extension for C + + 」が C # とは 能拡張ができ , C/C + + , BAS ℃ , COBO ラムでは , Common Language Runtime という中間言語べースのアーキテクチャ L, PerI などさまざまなプログラミング 別に用意された。 VisuaI StudiO. NET では既存の Win32 も が使われ , このコードは中間言語に一度 ロ語で利用できる。ただし , Java につ コンパイルされることになる。この中間 いては裁判の関係で開発がストップして サポートはされる予定だが , ビジネスペ ースのアプリケーションを中心に . N ET ロ語はにと呼ばれ , プログラムが実行さ いるという。異なる言語間でも相互にク ラスの継承が行えたり , 適材適所でプロ れるときは JIT コンパイラが使われる。 Framework への移行が行われるだろう。 Wi ndows はもちろんだが , ほかのプラ グラミング言語を使い分けることが可能 発売は、来年夏が予定されている。 だ。テータ交換には XML が利用され , そ ( 霧島有香 ) ットホームでの動作も可能だろう。 ◎ URL http:″www.microsoft.co.jp/ Products Products Seminar ( 株 ) ツールクラフト /WinDK Xpress Kit ソフトボート ( 株 ) / LOGO 言語を使う Suite fo 「 Windows CE を発売 組み立て式ロボットが発売 WEB トレンド導入セミナを開催 ( 株 ) 創育は同社の LOGO 言語を用いたプロ ( 株 ) ツールクラフトは同社のデバイスドラ ソフトボート ( 株 ) は , 9 月 7 日に東京都世 グラミングソフト「マイクロワールド」で制御 田谷区用賀のサン・マイクロシステムズ ( 株 ) イバ開発ツールと WindowsCE テパイスへの 組み込みキットを統合した開発ツール「 WinD を行うロホット「キャロポン 01 」を発売した。 社内セミナルームにおいて , Web サーバの ログ解析などを行う同社製品「 WEB トレンド」 ロポットは装備されたキャタピラを使って K Xpress Kit Suite for Windows CE 」を 6 月 9 移動でき , タッチセンサや赤外線受光センサ , に関するセミナを行う。 日に発売した。 スピーカが付けられている。これらはキット 製品の紹介をはじめ , Web サーバや Proxy この製品により , Windows CE 2. lx / 3.0 向 サーバ , ファイアウォールなどといったさま として提供されており , 組み立てることが必 けのデバイスドライバがウイザードなどを使 ざまなログ解析の方法について実機のログを 要となる。基盤は , はんだ付けが必要だが , って簡単に開発可能になる。まな Microsoft 使って解説する。なお , このセミナの参加者 希望すればはんだ付け済みの基盤に変えるこ PIatform Bu ⅱ der と組み合わせて使用するこ には WEB トレンドトライアル CD がもれなく ともできる。制御コマンドは , RS-232C に ともできる。 つなぐ赤外線ユニットを使用して与える。 デバイスドライバを作成するためのサンプ 配布される。 価格は基本バックで 9 , 000 円で , 別途マイ ルコードや C + + のクラスライブラリも付属す 参加費用は無料だが , 定員は 50 名までと クロワールド P 「 0 ( 24 , 000 円 ) , マイクロワー なっている。参加方法など詳しくは同社の ルド 2.5 ( 夏発売の新バージョンで対応 ) が必 標準価格は 1 , 000 , 000 円だが , 8 月 31 日ま WebAZ ージで案内されているので , そちら を参照してほしい。 要となる。 で 850 , 000 円で提供されている。 ◎ URL http://www.softboat.co.jp/events/ ◎ URL http://www.soiku-mm. CO. jp/mw/ ◎ URL http://www.t00にra化C0.jp/ MONTHLY HEAD 凵 NE 175
次に , システムキューに入ってきたこの このタイミングで He Ⅱ oWorld を表示して ムメッセージキューに対してメッセージを います。 マウスメッセージは , アプリケーションか 送信します。よって , アプリケーションの ら取り出されるのを待つようになります。 ・ WM DESTROY ウインドウの終了 処理に関係なく , すぐに制御が戻ってくる たとえば , テンプレートのうち WinMain なお , Wmdows のメッセージにはメッセ のです。 関数の最終行近くには List 6- ①のようなコ ージキューとメッセージキューを使わない このあたりは実際のプログラミングでの ードが書かれています。これは , システム メッセージの 2 種類が存在します。 使い分けが必要になります。 キューに入っているメッセージをチェック ・ SendMessage( メッセージキューを通 ダイアログボックス するルーチンです。自分へのメッセージが らない ) あった場合 , DispatchMessage 関数で目的 ・ PostMessage ( メッセージキューを通 次は , ダイアログボックスをメインにし のウインドウへ送信 , 処理を行うようになっ る ) たアプリケーションです。ダイアログボッ ているのです。ウインドウ側は , そのメッセ 基本的に , どちらも設定したウインドウ クスは Windows プログラミングでもっとも ージを受け取って処理を行います。先のテ ハンドルに対して指定のメッセージを送信 よく使うウインドウです。一般的なオプシ ンプレートでは , WndProc 関数がこの処理 しますが , SendMessage はメッセージキュ ョン設定はもとより , 最近は , ダイアログ 部分に該当します。ここで , 以下のメッセ ーを通らない仕組みになっています。その ポックスがメインのウインドウアプリケー ージがきた場合の処理が記述されています。 ため , メッセージを受け取ったプロシージ ションも多く存在します (Fig. 7 ) 。 ・ WM_CREATE ウインドウが作成され ャがメッセージを処理し終わるまで制御を こでは , Windows CE でダイアログボ た 戻しません。 ックスのウインドウを利用する方法を説明 ・ WM_PAINT ウインドウの描画タイミン それに対して PostMessage は , 該当アプ します。 グ リケーションではなく , Windows のシステ なお , ダイアログボックスは CE Toolkit ダイアログボックスのアプリケーション 7 Fig. 7 ダイアログボックスサンプルの実行画面 ダイアログボックスのアプリケ - ション 3 1 卩 iinclude e 日 t2. h 新 #include <commctrl . HINSTANCE hlnst = ル L ・ K の h ld 盟 a = NI ルレ H 搬 hwndCB = ル L ー 都」 hMenu =NULL; ヨ DWORD dPrevMenu=NULL; H 駅 Ap aæ [ 30 ] = TEXT()C 期” ); EHAR 日 e [ 20 bSuccess = FALSE; CALLBACK testDlgPunc( HWND hDlg, U 靆孤 message, WPARAM wParam, LPARAM lParam ) “址 ch ( message ) { case WM-. INIDIAIm: return TRUE ー case WM—COuAND ・ switch ( GET—WM—COuAND_ID( wParam, lparam ) ) { case ImK : case Di 引 ( , ) return TRUE こみ施、欟うイカド ハント、ルにン = 乙ゴこ k 麒 を朝物 EPITOR , な山こ、 t 、 ! 水ツな ( MAGAZINE Fig. 8 ダイアログボックスの設計画面 万イルの編集 ( 印表示挿入和シトビルド ( 印しイアウト 0 ツール (I) ウインヘルア 」ロ 0 、、すべてのりコつゞメンハ ' ) test2 ー M 「 0S0 Visual C ◆ + ー [test2.rc ー IDD D 語 [ 0G1 (Dialog)] 三」を貶ジトス 三・日 Di 引 ダイアログボックスのみのアカケー シ第ン OtestDleFunc 、調ロ田圄區日国 C MAG AZINE return PALSE WinMain int WINAPI WinMain(HINSTANCE hlngtance, HINSTANCE hPrevInstance, ゆい ne , も P SI 沢 土 n に OK い口 msg; hlnst = hlnstance ー hlnst, , NULL, testDlgpunc ) return (msg. wparam); 第、第洋を第ル当 : ゞコ鵞 レデ ~ 0 ま 0 ー 58 C MAGAZINE 2000 9
デイタなどで GUI を駆使してメイン画面を その対応として , まず , 作成するときに のリソースエデイタでデザインすることが 設定できるのも利点です。 メニューハンドルの有効無効を確認します。 できます ( Fig. 8 ) 。 こで注意すべきなの ・ウインドウを重ねることができる この場合の有効無効は , メニューハンドル は , Windows CE ではノーマルのウインド 通常の Wrndows CE アプリケーションは が NULL であるか否かを見るものであり , ウと同様にウインドウの最大化や最小化な どがサポートされていないので , 指定でき ウインドウを重ね合わせることはできず , の状態によっては , メニューをいったん削 単一ウインドウです。たとえば工デイタの 除する必要が出てきます。削除した場合 , るウインドウスタイルが一部 Windows 95 / 98 や NT と違うということです。 文字列検索機能では , 下のウインドウ内容 またはハンドルが NULL であった場合はそ また , サイズが変更できないことも忘れ が見えたほうがよいでしよう。このような のメニューハンドルを対象にし , メニュー てはいけません。 WindowsCE マシンの場 ときにダイアログボックスをうまく利用す を新規作成します。こうすることによって , 合 , 表示領域は思ったより小さいので , 気 るととても使いやすくなります。 メニューリソースのムダを防ぐことが可能 を付けないとあっさり画面をオーバーして となります。 メニューを作成するプログラム しまいます。 PaIm-size PC はかなりディス メニューアイテムの追加は , 通常の Wind プレイサイズが小さいので , とくに注意す 次に , メニューの作成方法を解説しまし ows 95 / 98 / NT プログラミングと同様に App よう。普通にメニューを利用するには , リ る必要があります。 endMenu 関数を利用します。なお , Windo ソースエディ List 7 がダイアログボックス用のソースコ タであらかじめメニューを作 ws CE では Unicode 対応が必要なので , TEX ードです。見てわかるように , 通常の Wmd 成しておくことが可能です。ですが T 処理の部分で , TEXT ( ) マクロを用います。 ows 95 / 98 と同じです。、このダイアログボ では動的にメニューを作成してみましよう。 こで作成するポップアップメニ ックスをアプリケーションから呼ぶ場合は つまり , クライアントエリアの適当な場 ューはカスケードメニューの形式にしてい DialogBox 関数を呼ぶだけです。 所に表示するメニューで , イメージ的には ます。 AppendMenu の最下行でメニュー項 Windows98 などのマウスの右クリックに代 目 ID ではなく , 直前に作成したメニューハ ダイアログボックスの利点 表されるポップアップメニューと同等の動 ンドルを設定していることに注目してくだ ダイアログボックスアプリケーションの 作になります (Fig. 9 ) 。ソースコードは List 利点として , 次のようなものがあります。 8 です。 任意の位置に表示させる場合 ・プログラミングが容易である 動的にメニューを作成する メインのウインドウを登録しないという ポップアップメニューを任意の位置に表 ことでコード量も減るうえ , 使用メモリ量 動的にプログラムでメニューを作成する 示させるには , GetSystemMetrics という AP も少なく済みます。とくにオプション設定 場合 , その作成タイミングによっては , 何 I を用います。ここでは画面中央に表示して などで終わってしまう簡単なプログラムに 度もメニュー作成ルーチンを呼び出すこと います。 は向いているでしよう。また , リソース工 が考えられます。 なお , クライアントエリア内にコマンド バーが存在している場合 , 若干位置の調整 Fig. 9 ポップアップメニューサンプルの実行画面 が必要です。具体的にはコマンドバーの高 さを考慮する必要があります。 また , 右クリックに対応させる場合など は List 9 のように WM_LBU"ITONDOWN メ ッセージに対応させることで可能です。 終わりに Wmdows CE の開発も基本的にイベント ドリプンなので , PaIm や Win32 と非常によ く似ていることがわかったかと思います。 しかも , Win32 と関数名やインクルード ファイル名などが微妙に違う palm と違い , WmdowsCE は同じ関数名が多くあります。 とにもかくにも , PC での開発経験が生きて くるのがいちばんの利点となるでしよう。 POPUP MENIJ ト TEST2 TEST 3 ストト = もマイルドへルド・〔幽 G I 右クリックに対応する 2 ? : 28 st 9 1 cage - 工 B [ ー : SetporegroundWi.ndov(hvnd); TrackpopupMenu(hænuPopupprg,TPM—RIæITALI% ptx, 220 , 0 , h d , 部 60 C MAGAZINE 2000 9
プログラミング技術情報誌・ C マガジン C 0 N T E N T S ッ コ ム の ズ グ ン 原補 礎作き 基動動 ノののの 処刋一。定 画モゲ判 の服一衝使 ル衣ワ索と デとト探感 動 をプ モ体ッ路実 3 人ネ経現 1 2 3 4 5 3 10 特集 1 こてつ 43 特集 2 tatsuya Palm 編 Palm OS + CodeWarrior for PaIm OS Palm-size PC 編 Windows CE + Windows CE T001kit Zaurus 編 Zaurus 十 CodeWarrior for ZaLlrLlS PDA & 開発環境読者モニタ募集 特別記事 Borland C 十十 Builder ビジュアル開発環境のアーキテクチャ魔夜隆志 特別記事 Turb0 Debugger 55 入門 魔夜隆志 BCC55 Q & A プログ、ラミンクオ目言炎室く Bo 血 nd C + + compile 「 5.5 Q 集 ( 3 ) > 魔夜隆史 C 言語プログラミング学習塾く第 6 回 > ポインタを使う長久勝 8 な L て叮叮のパワーアップ C + + く第 6 回 > 継承と多態 Pe 月プログラミングの楽しみく第 8 回 > リファレンスの楽しみ結城浩 Standard C/C + + 『 deque の改良』 P. J Ⅲ auge 「 / 熊谷典大訳 伝授 ! 極めよ Ruby 道く第 2 回 > イテレ→あれこれ後藤謙太郎 Java プログラミングリファレンス 詳説 JDK 解体新書く第 40 回 > 式 (Expression)(9) きだあきら 画像処理を極める アルゴリズムラボく第 12 回 > 骨格化と細線化処理昌達 K'z 70 76 81 82 89 95 103 108 114 122
8 ムヒ ーションを開発できる環境が提供されています。この特集では , PDA のプ ログラミング手法とともに , PaIm, Windows CE(PaIm-size (C), そ アプリケーション開発の特徴と手法を解説していきます。また , 各メーカ ーのご協力により , PDA 本体と開発環境の読者モニタを用意しました。興 味をお持ちの方は , この機会にせひご応募ください。 PDA プロクラミン % PdIm Windows CE Zaurus 特集 2 携帯端末を使いこなす コツ 活躍するわけです。実際には現状の携帯電 そして通信インフラの整備に伴い , 最近 PDA 最新事情 舌より数年も前に製品が登場し , 多くのユ は 2 ) のようなインターネットへのアクセス こ 1 , 2 年で一気にモバイルコンピュー ーザからの意見によって機能が成熟されて 機能が強化されています。その中心は電子 ティングが花開こうとしています。携帯電 いるのですから , 便利なのも当然です。 メールの送受信機能ですが , Web プラウザ 話や電子メールの普及 , Web を利用した情 最近 DPDA に ! 載されて 0 、る機能には , を搭載して Java に対応する機種も増えてき 報発信など , いま必要な情報がリアルタイ ました。これからは , どの PDA にも基本機 次のような特徴力あります。 ムで入手できる製品とシステムがそろって 能として搭載されていくでしよう。 1 ) 電子手帳としての機能 ( 曰 M ) 3 ) のマルチメディアへの対応は , 現在い きました。 2 ) メールなどインターネットへのアクセ とくに , 携帯電話のメール表示機能は本 ちばんの目玉であり , もっとも激しい宣伝 ス機能 体の持ち運びやすさもあってとても便利で 3 ) マルチメディアへの対応 競争が行われている機能です。 PC ほどのス す。また銀行の残高照会など , ー画面で済 1 ) の電子手帳としての PIM は , これら PD ペックはないものの本格的なハードウェア む情報ならば簡単かつ手軽に使うことがで A の基本機能です。 PDA 単体としての使い を持つ PDA ならではの機能で , PDA の多機 きます。ところが情報端末として見た場合 , 勝手や PC とのデータ連携機能などがあげら 能性をアピールするのには格好のポイント 携帯電話は持ちやすい反面 , その小さな画 れます。基本だけにいちばん成熟した機能 になっています。それを支えるのがネット 面やメモリでは扱う情報量に限界がありま であり , すでに各 PDA とも機能的な差はほ ワーク向けのマルチメディア技術です。と とんどありません。そのぶん入力方法や基 す。 くに M 円形式のサウンドデータはデータサ 本画面などのインタフェイスが工夫されて そこで , 携帯電話ほどの可搬性はないも イズと品質のバランスに優れ , 次世代の携 ののポケットに入る程度の大きさであり , おり , 見た目の特徴がいちばん現れるとこ 帯音楽フォーマットとして有力視されてい 見やすい画面と多機能を両立させた PDA が ます。すでに M 円専用のコンパクトなプレ ろでしよう。 特集 2 携帯端末を使いこなす PDA プログラミングのコツ 43 1 三ロ 一ごロ