288 付録 / / アプリケーションオプジェクトにウインドウを挿入 void Cneko : : 工 nitMainWindow ( ) MainWindow = new ffWindow (NULL ′ Name ) : 土 n し PASCAL WinMain (H 工 NSTANCE h 工 nstance ′ H 工 NSTANCE hPrev 工 nstance ′ LPSTR 1pCmdLine , 土 n し nCmdShow) cneko neko ( " 我が輩は猫である " , h 工 nstance , hPrev 工 nstance, 1pCmdLine ′ nCmdShow) : neko . Run() : return nekO . Status ー 5 EasyWin によるフ勾クラミング 3 節 , 4 節のサンプルプログラムを見ると , Windows のプログラムはちょっ としたプログラムでも長くなる傾向があるのがわかります . そのため , Windows のプログラミングは , 最初の敷居が高いようです . WindowsAPI を覚える ( というか , その使い方を理解する ) のは大変だし , Object Windows は Object Windows なりに理解しなければならないことがた くさんあります . そこで本節では , 究極の Windows のプログラミング方法を紹介します . の方法を使えば , Windows プログラミングに関する知識なしで , Windows 用 のプログラムを作ることができます . たとえば , 1. 1.2 節の挨拶をするプログラムを例にします . このプログラム は , わすか 5 行ですが , " 我が輩は猫である " という文字列を表示する完結し たプログラムでした . このたった 5 行のプログラムの Windows 版を作るとし たら , 当然前節や前々節のプログラムよりも長くなることが予想されます . そこで , 究極の Windows プログラミング手法である , EasyWin の登場と なるわけです . EasyWin は , Turb0 C + + For Windows や BorIand C + + に付属 している , 特殊な Windows 用のライプラリです .
280 ② Turbo C + + For Windows ③ BorIand C + + ④ Borland C + + & Application Frameworks ①を購入した場合 , Windows のプログラムを作るには , 上記のいずれかを 追加購入する必要があります . なお , ①から④へはバージョンアップが可能です . このバージョンアップが いっ終了するかは不明ですが , 現在 ( ' 94 年 3 月確認済み ) のところは可能と のことです . ・ Object Windows どれを選択するかの 1 つの目安として , ObjectWindows をどうするかがあ ります . ObjectWindows は , Windows 用のソース付のクラスライプラリで , これ がなくても Windows のプログラミングは可能です . しかし , Object W1ndows があるのとないのとでは , プログラミングの難易度が変わってきます . もし ObjectWindows を使わないなら W ⅲ dows のプログラミングにポーランド社 製の C →ンパイラを使う意味カ : ありません . Object Windows は , 上記製品の②と④に付属しています . しかし , ③を 購入した場合でも差額を支払えば , AppIication Frameworks が購入でき , そ の申し込み書が③に含まれているとのことです . 0 Turbo Vision もう 1 つの選択の基準として , Turbo VISion が上げられます . Turbo Vision は , ObjectWindows の DOS 版に相当します . Windows とは直接関係ありま せんが , ポーランド系のコンパイラを使うなら , 気になるところです . TurboVision は , メニューバーやダイアログボックスといった Windows 風 のアプリケーションを作ることができます . あまり知られていませんが TurboVision で作った実行ファイルは , ( 実行ファイル自身が機種判断して ) PC -9801 でも DOS / V でも動かすことが可能です . Turbo Vision は , 現在では④にのみ含まれています . ゆえに , Turbo Vision も使いたいなら , ①十②の組み合わせでは不可能になります . このこ とも , ② ~ ④選択のポイントになるでしよう . * 上記は , 直接ホーラント社に確認した事項 ( ' 94 年 3 月現在 ) てす .
2 期 hdo Ⅳ s フ勾グラミング・ツアー 279 Windows フ勾クラミンクに必要なもの 1 Ⅵⅱ ndows のプログラミングは , DOS のプログラミングとかなり違います . 必要なソフトウェア , 作成しなければならないファイル , コンパイルの仕方 , 実行のさせ方のすべてが異なります . Windows のプログラミングについてそのすべてをここで説明するのは , レ ベル的にもページ数的にも不可能です . しかし , その限られた紙面の範囲で 可能な限り , " Windows のプログラミングはこんなふうに進む " といったこと を示していきます . さらに , ぜいたくにも 3 通りの方法で Windows のプログ ラムを作る方法を示します . 今後 , W ⅲ dows のプログラミングに進む場合の参考になるでしよう . 0 必要なソフト まず重要な点は , Turbo C + + だけでは , Wmdows のプログラムを作れない ということです . 本書執筆段階で販売されている Turbo C + + のノヾージョンは , 次のようにな っています . ① Turbo C + + 2nd Edtion ①は , DOS 用のコンパイラなので , これだけでは Windows のプログラムを コンパイルすることはできません . Windows のプログラムを , ポーランド社 製の C/C + + コンパイラを使って作るなら , 次の 3 つの中から選択することに なります .
286 ・ 付録 【実行例】 開→ー我が輩は猫であを」 = ~ 新新 、、我が輩は このウインドウは , 通常のウインドウと同様にサイズを変えたり , 移動させ 猫である " と表示されています . このサンプルプログラム用のウインドウが表示され , タイトルに This program must be run under Microsoft windows . A>sample 次のようなエラーメッセージが表示されます . * このサンプレプロクラム 81 は , Windows 上でのみ実行可能てす . 仮に DOS 上て実行させても , る最小のものでも大袈裟になってしまいます . このように Windows のプログラムは , たった 1 枚のウインドウを表示させ 行っていません . ただ , 空のウインドウを表示しているだけです . しかし , ウインドウを表示しているからといっても , プログラム的には何も させる ( プログラムを終了させる ) ことができます . たりもできます . そして , Windows の標準的な方法でウインドウをクローズ
2 Windows フ勾クラミング・ツアー 2 実行ファイルを作るのに必要なファイル Windows のプログラムは , 実行ファイルを作るのに必要なファイルが DOS と比べて複雑です . DOS の場合だと極端な場合 , ソースファイルが 1 本 あればよく , ソースファイルから実行ファイルを作るのも , 次のように単純で ース コンパイルとリンク ソースファイ丿レ ( 場合によっては複数ある ) しかし Wrndows の場合 , 実行ファイルを作るのに次のファイルが必要にな テファイル 28 ノ ります . ファイルの種類 ソースファイル モジュール定義ファイル リソースファイル 拡張子 . c など . def * アイコンやメ二ュー , ダイアロクホックスといった Windows 特有の視覚的な要素をリソースと とめます . Windows プログラムの実行ファイルを作成するまでの過程を , 次の図にま ファイルをコンパイルしたものを , リソースコンパイラでリンクします . ソースコンパイラでコンパイルします . そして再度 , 実行ファイルとリソ ンク時にモジュール定義ファイルが必要になります . リソースファイルは , ソースファイルのコンパイルは , DOS の場合とほば同様です . ただし , いい , これを定義してあるファイルをリソースファイルといいます リ リ
70 目次 1 インストール・ ・・ 266- 2 Turbo c + + を使うための環境設定・・ 3 TC の起動と終了・・ ・・ 2 刀 4 新規ファイルの入力とセープ・・ 5 工テイタの使い方・・・ ・・ 27 イ 6 コンバイルと実行・・ ・・ 2.75 7 もし工ラーが出たら ? ・・ 8 既存ファイルの修正・・・ 付録 インストールと コンパイル ・・ 2 ち ・・ 2 歹 1 Windows プログラミングに必要なもの・・・ 2 実行ファイルを作るのに必要なファイ丿い・ 3 Windows API によるプログラミング・・ 4 Object Windows によるプログラミング・ 5 EasyWin によるプログラミング・ ・・ 279 ・・ 287 ア ッ グ 0 ラ グ ・・ 287 ・・ 288 基本ライプラリ・リファレンス・・ ・・ 290 付録 基本ライプラリ・ リファレンス 本文カッ 井明子
2 ル / hdo ル s プログラミング・ツアー 4 0 e Ⅳ加 do Ⅳ 5 によるフ勾グラミング ObjectWindows は , Windows 用のプログラムを作るためのクラスライプ ラリです . クラスライプラリというのは , 本書では扱わなかった C + + 用のライプラリの ことです . クラスは , C の構造体を拡張したもので , c + + ではそのクラスを使 ってライプラリを作ります . ObjectWindows は , Windows 用のアプリケーション作成に必要なことを , うまくクラスの中に閉じ込めてあります . そのため , WindowsAP1 をほとん ど使わずに , Windows のプログラムを作ることができます . 前節でも説明したように , WindowsAPI は約 600 個の関数があり , そのた め覚えるのが面倒な上 , プログラムも難しくなっています . この Object Windows を使えば , W ⅲ dowsAPI よりも簡単にプログラムを作ることができ るのです . 次は , 前節と同様のプログラムを ObjectWindows を使って書いたもので す . 前節のプログラムで見られた , PostQuitMessage や DefWindowProc と いった W ⅲ dowsAPI がまったく使われていないことに注意してください . サンプレプログラム 82 287 neko . C ー我が輩は猫である #include く 0W1 . h> / / 固有のアプリケーションを TApp1 icat ion から派生 class Cneko : public TApp1ication public: Cneko (LPSTR AName , H 工 NSTANCE h 工 nstance ′ H 工 NSTANCE hPrev 工 nstance ′ LPSTR 1pCmdLine ′土 n し nCmdShow) TAppIication(AName ′ h 工 nstance, hPrev 工 nstance, 1pCmdLine ′ nCmdShow) { } ー virtual VOid 工 nitMainWindow( ) ー
2 Ⅳ / ndo ル s プログラミング・ツアー この EasyWin を使うと , 何と 1. 1. 2 節の挨拶をするプログラムがそのまま Windows 用のプログラムになってしまうのです . プログラムを 1 字も変更す る必要はありません . ただ , コンパイル時にオプションをちょっといじって , EasyWm をリンクするようにするだけです . 信じられないような話ですが , 本 当なのです . 実際に , EasyWin を使ってコンパイルし , 実行させたものを次に示します . 我が輩は猫である 目冖 (lnactive A:}EAS\WIN. 艇) ・ ません . ど , Turbo C 特有の関数を使ったプログラムを , Wmdows 化することはでき C の標準関数を使ったプログラムだけで , 第 3 章で説明したグラフィックスな ただし , EasyWin で使えるのは , いわゆる通常の ( どの処理系でも使える ) とが可能です . で紹介したサンプルプログラムは , すべて Windows 用のプログラムにするこ のまま Windows 用のプログラムにしてしまうことです . 実際 , 本書の第 1 章 EasyWin がすごいのは , DOS 用のプログラムをまったく変更しないで , そ 289
299 FILE FILES float float 型・ fopen for ・ 【 G ・ H 】 getS gettext gettextinfo got0XY gr 叩 herrormsg gr 叩 hics. h gr 叩 hics. lib gr 叩 hresult ・ grOk hardcopy if initgraph INSTALL ・ int 型整数 iomanip. h iostream. h istream withassign kbhit line ・ long int 型整数 【 M ・ N ・ 0 】 mam nosound null 文字・ Object Windows ostream withassign 【 P ・ Q 】 path PC98. BGI ・ pc98fkeychk pc98fkeyoff pc98fkeyon PC98HI. BGI ・ ・・ 170 ・・ 270 ・・・ 34 ・・ 170 ・・・ 77 ・・・ 57 ・・ 154 ・・ 156 ・・ 197 ・・ 191 ・・・ 196 ・・・ 196 ・・・ 201 ・・・ 63 ・・ 194 ・・ 267 ・・・ 34 ・・ 126 ・・ 24 ・・・ 59 ・・・ 166 ・・ 198 ・・・ 34 ・・・ 191 , 194 ・・・ 192 ・・・ 153 ・・ 153 ・・・ 153 ・・・ 192 ・・・ 270 ・・・ 24 ・・・ 280 , 287 ・・ 52 ・・ 163 ・・ 1 2 , 87 PostQuitMes sage pri ntf putch puttext qsort random randomi ze rectangle return screenheight setw sizeof sound stdprn ・ strcpy struct switch textattr textmode Turbo Vision ・ VOid 引数・・ 戻り値・・ ポインタ VOid * ・ 【 w 】 Warning while while 文 do ~ while Windows API Windows のプログラミング 索引 ・・・ 287 ・・ 147 ・・ 154 ・・・ 241 ・・・ 139 ・・・ 140 ・・・ 198 ・・・ 13 , 84 , 86 ・・ 159 ・・・ 126 ・・・ 97 ・・・ 163 ・・・ 184 ・・ 54 ・・・ 70 ・・ 146 ・・・ 150 ・・ 280 ・・・ 86 ・・・ 84 ・・・ 243 ・・・ 243 ・・・ 73 ・・・ 76 ・・・ 283 ・・・ 279
2 hdo Ⅳ s プログラミング・ツアー その第 1 は , 最も伝統的な WindowsA 円を使う方法です . 節から , 3 通りのプログラミングの方法を示します . Windows のプログラムを作るのに必要なファイルが分かったところで , 本 3 Ⅳ加 do Ⅳ s P ′によるフ勾グラミング 次に , W ⅲ dowsAPI を使って作ったサンプルプログラムを示します . 覚えるのが面倒な上に , プログラミングも比較的難しくなります . WindowsAPI を使えば何でもできる代りに , 理解するのに時間がかかり , ます . 個あります . DOS のプログラムでいえば , int 脈 21 のシステムコールに相当し WindowsAPI は , Windows のプログラムを作るための汎用関数で , 約 600 サンプレプログラム 81 283 neko . C ー我が輩は猫である #include <windows . h> / * メッセージハンドラ * / long FAR PASCAL WndProc (HWND hw, LONG 1Param) 土 f (message WM_DESTROY) { PostQuitMessage ( O ) ー re turn return DefWindowProc ()w ′ WORD message ー WORD wParam, / * ウインドウの破壊が必要 * / / * 自分で処理しない場合 * / message ′ wParam, 1Param) :