また、「デバッグ版」「リリース版」の違いについて知らない方も多数いらっしゃいます。 (16ビット時代のメモリーモデルについては名前も聞いたことがない人がいるのでは!?)
コンソールアプリケーションを作るときもプロジェクトを作ってください。プロジェクトを 作る癖をつけておくとSDK編に進んでもスムースにいきます。プロジェクトを作らずに ソースファイルをいきなりビルドしても自動的にコンソールアプリの設定で プログラムが作れますが、あとで困ることになります。
この説明を読んでもうまくいかない人は筆者にメールで問い合わせてください。 (VC++以外の人は質問されてもわかりません)
また、筆者にメールで問い合わせるときは 必要時以外はテキストのメールにしてください。 OutLook ExpressはデフォルトがHTMLメールになっています。「ツール」「オプション」 「送信」「メール送信の形式」を「テキスト形式」にしてください。
すると下図のような「新規作成ダイアログ」が出現します。
コンソールアプリケーションを作るのであれば「Win32 Console Application」
SDKや手書きMFCのプログラムを作るのであれば「Win32 Application」を選択します。
プロジェクト名をつけます。これがアプリケーションの名前となります。 プロジェクト名を「abc」とすれば、出来上がるプログラムは「abc.exe」となります。
「OK」ボタンを押すとウィザードが出てきますが「空のプロジェクト」を作るに してください。(VC++5.0,4.Xではこのウィザードは出現しません)
「テキストファイルの新規作成」ボタンを押します。(赤丸印)
あるいは先ほどの「新規作成ダイアログ」の「ファイル」タブを
押して「C++ソースファイル」を選択してもよいです。
この場合「プロジェクトに追加」にチェックがあれば「プロジェクトへ追加」
の作業が省略できます。
何も記入されていないエディタが出てきますので、これにソース・コード
(プログラム)を書き込みます。「ファイル」「名前を付けて保存」で
「abc.c」または「abc.cpp」というように拡張子がcまたはcppで保存します。
(ファイルのベース名をプロジェクトと同じにしておくと便利です。)
前者はC言語、後者はC++言語を表します。拡張子をcppにして中身を
全部C言語で書いても問題ありません。(逆は不可)
次に、「プロジェクト」「プロジェクトへ追加」「ファイル」で 先ほどの「abc.c(またはabc.cpp)」を選択します。(VC++4.Xではメニューの「挿入」 からファイルを追加します。)
「新規作成ダイアログ」の「ファイル」「C++ソースファイル」で ソースファイルを作った人はこの作業は不要です。
次に「リリース版」か「デバッグ版」のどちらのプログラムを作成するかを
決めます。前者は完成品、後者はまだ未完成でデバッグが必要な場合です。
しかし、デバッグをするのにデバッガを使わないのであればいきなり
リリース版を作ってもかまいません。そのほうがビルド時間が短く
HDDも節約になります。EXEもリリース版のほうがサイズも小さく、実行速度も
速いです。
これを設定するには「ビルド」「アクティブな構成の設定」で行います。
もっと簡単に設定するには2つ前の図で「Win32 Release」と書いてある コンボボックスで選択します。このツールバーが表示されていない人は、 「ツール」「カスタマイズ」「ツールバー」で「ビルド」にチェックをつけてください。
ここまでできたら後はビルドするだけです。
「F7」キーを押すか、「ビルド」「ビルド」を選択するか、もしくは 「ビルドボタン」を押します。
プログラムが出来上がってテスト運転をするときは、「ビルド」「実行」を 選択するか、「実行ボタン(!マークのやつ)」を押すか、「Ctrl+F5」キーを 押します。
「プロジェクト」「設定」で「一般」タブを選択します。
Microsoft Foundation Classを「 MFCのスタティックライブラリを使用」か 「共有DLLでMFC使用」を選択します。
前者は必要なものが全部EXEに入っているのでサイズがかなり大きくなります。 後者は共通DLLを使うのでEXEのサイズは小さくなります。 しかし、古いWindows95などでは新しいバージョンのDLLがないために、 動作しない可能性もあります。 (ユーザーがコンピュータに詳しい人であれば常に最新のDLLをインストールしているので 問題ないと思われます。)
次に「C/C++」タブを選択します。「カテゴリ」を「コード生成」にします。
「一般」で「MFCのスタティックライブラリを使用」を選択した場合は 「使用するランタイムライブラリ」 を「マルチスレッド」にします。
「共有DLLでMFCを使用」を選択した場合は 「マルチスレッド(DLL)」を選択します。
SDK編では、その章を書いたときの最新のVC++を用いています。したがって
章によって使われているVC++のバージョンが違います。
たとえばSDK編第49章までは、VC++4.Xを使用しています。
このため
という表現がありますが、VC++4.Xの時代までは ワーニングも出ずにとおっていました。VC++5.0からはエラーになります。 型チェックが厳しくなったのです。エラーメッセージを読めば どこをどう直せばよいかすぐにわかると思います。 第50章からは型キャストをしているので、エラーは出ないはずです。WNDCLASS wc; ... wc.hbrBackground = GetStockObject(WHITE_BRUSH);
また、C言語編第57章で少しだけSDKのプログラムの話が 出ていますが、これはWin16時代のものです。
とありますが、32ビット版のVC++を使うと正しくビルドできません。 Win32ではWinMain( HANDLE hInstance,HANDLE hPrevInstance, ....)
というようにWinMain関数の引数の型が変更になっていますのでご注意ください。WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance, ....)
Update 27/Sep/1999 By Y.Kumei