Windows Programming (1) - 基礎知識と参考文献 - 2000.December 1. 概要  FreeなC/C++コンパイラでWin32なプログラムをしよう。という企画です。が、  はっきり言ってWindowsなプログラムを解説しているサイトは山ほどあるし、私の  実力なんて吹けば飛ぶような代物なので、ご注意のほどを。  ちなみにどんなコンパイラであろうとも、コマンドラインから使うことが前提です。  つまりDOS窓から。です。  …コンパイルをDOS窓で行う。ということであって、出来たプログラムがDOS窓からしか  動かせない。ということでは全くありませんよ。もちろんですが。  で、何故に統合環境(IDE)を使わないの?という問いへの答えですが。  「それら(IDE)には汎用性がない。」  ってことです。*どこでもコードウォーリァ*ならともかくですけど、そうも言って  られません。ましてVC++な統合環境がWindows以外で使えるかというと、そんなことは  あり得ない訳です。  更にFreeなコンパイラにIDEは付属してない。ということです。まぁLcc-Win32には立派な  IDEが付いてますけどね。 2. 基礎知識・前提  以下、単なる確認です。  1. Windowsマシンで動くプログラムには主に4種類ある   厳密なベンダー定義の用語ではないですが……。   a. 16 bitなDOSアプリ    必ずDOS窓が必要。純DOSマシンでも動作可能。LSI-C86のお試し版等で作れます。    拡張子.com、または.exeです。    .comなコマンドは原則としてデータやプログラムコードの合計が64KB。という制限が    ありますが、それは原則。例えば有名なVz Editorは.comですが、扱えるファイル    サイズが64KBまで。などという情けない制限はありません。    #でも、ここではこのタイプのアプリはこれ以上扱いません   b. Win16なアプリ    見かけ上は普通の窓プログラムです。でも実体はWindows 3.0とかWindows 3.1    対応なアプリ。最近、見かけなくなりましたが。    #Win16なアプリをコンパイル可能なfreeなC/C++コンパイラを私は知りませんし、     経験もほとんどないので割愛。LSI-C86のお試し版はWin16アプリを作れません。    #どうしてもこれやりたければVC++ 1.5とかBC++の何とかパックを探して下さい。     …もちろんどっちも市販品ですよ!   c. 32 bit consoleアプリ    DOS窓必須。しかし純DOSでは動かない。16 bitアプリと異なり、Win32なAPIの    殆どが使用可能(一部、使えないAPIがある)だが、ANSIエスケープシーケンスが    使用できないという問題があったりする。DOSアプリを移植しようとして    この点にはまる人がいるようだが、MSと書いた藁人形を用意して丑の刻参りする    しか手はないです(爆)    #丑の刻参りって、女性しかできませんよ。あれは性差別があるんです。念為    それと、VC++ 1.xは16 bitアプリ専用。そしてVC++ 2.0以降、もちろんVC++ 4.0    以降なんかは32 bitアプリ専用です。    この点、たまに間違える人がいるんで補足しておきます。     d. Win32アプリ    いわゆる「普通な」窓プログラム。念のためですが、32 bit consoleな奴も    Win32プログラムです。ここではわざと区別しましたが。  3. SDK   C/C++でWindowsプログラミングをやる場合、大きく分けて流儀に2つあります。MFCを   使うか、使わないか。です。   #超大ざっぱであることは自覚してるので、つっこまないで   ここではMFCを使わない、いわゆる「SDKレベル」というのが対象。どーゆー意味   かと言うと、FreeなWin32なCコンパイラの全てで通用する技法。ということ。   MFCは商用コンパイラの一部でしか使えませんからね。   でも、WatcomとかBC++とかがMFCを同梱している。というのも事実。MFCは事実上の   技術標準です。SDKレベルでごそごそ。ってのは、余り賢くないです。正直言えば。   #OWLとかVCLの話は省略。ユーザな方には申し訳ありませんが、私は知らないので  4. MSDN   ANSI C準拠なことしかしないなら、MSDNは不要ですが、そうでないなら必須。   基本的に有料なMSのプログラマ向けサービス。その内容は英語で良ければWebから   無料で落とせる。しかし、最低ランクのLibrary EditionならVS買うと無料で1年間   付いてくるので、無料かつ無制限な回線がないならそっちがお得。   というか、最低でもライブラリ・エディションは単体でも買え!です。   ちなみに、MSDNのCD-ROMを入手すると、日本語な内容が読めるが、その内容は   肝心なことがあっさりさっぱり欠落してたりするので、英語の方を読まないと   酷いことになるので注意が必要。   #MSDN 2000.10バージョンからかなり改善されてます。それ以前のMSDN日本語版だと    例えばwsprintfが1024文字以上の文字列を扱えない。という事実(英語版には大昔から    記述あり)が、カケラも触れられていませんでした。   後、KBは必ずサーチすべし。「DDKドキュメントにこう書いてあるが、それは   嘘だよ〜ん」とかの記述があって、思わず脱力したりするから。  5. 参考書   窓プログラムではMSDNが唯一絶対。と思うべき。それ以外の例えば「APIバイブル」は   あくまで参考書。悪いことは言わない。アレ買う金があるならMSDNのLibrary Editionを   買うべき。MSDNの所持が前提なら「APIバイブル」は悪い選択ではないと思います。が、   あれらはMSDNの代わりにはなりません。   その他、いわゆる「ペゾルト本」を買うのも悪い選択ではないと思うが、MSDNの   Library Editionを最低でも買うのが先ず先決とか思う。   …「APIバイブル1/2/3」や、「ペゾルト本」などを実際に読んで使っての   感想ですよ。どれも素晴らしい書籍ではあります。が、あくまでも参考書。   副読本です。主従を取り違えないように。   あ。そうそう。C言語の本も何か1冊用意してね。お薦めはありません。私、Cは   独学ですんで、本を知らないのです。自慢じゃないけど、10指に余る処理系を   ごちゃごちゃ使ってれば、マニュアル読むだけで*ごちそうさま*です(^^;;   #「C/C++言語」の本です。間違って「C/C++処理系」の本を買わないように。    ANSI CとかC90、C99とかの規格の話が出てくるのが前者。MicrosoftとかBorlandとか    会社名が出てくるのが後者の本。Windowsで、とかOSの名前が出てくるのも大概は    後者。    後、ぱらぱらめくってvoid main()なんてサンプルがあったら、著者はCを知らないか、    とっても昔の本なので絶対買ってはいけません。規格違反ですから。その書き方。 (EOF)