さて、もう一歩進めてMS Windowsらしく使いましょう。「コマンドプロンプト」から ファイル名を叩いて実行するなんて、MS Windowsらしくないですね。最後はアイコンを ダブルクリックすると起動、とかいうのが、それらしいでしょう。
それと同じ事をするのに、「エクスプローラ」上でhello.exeをダブルクリックして 起動してみます。「スタート」を右クリックするとポップアップウィンドウに 「エクスプローラ」がありますから、それをクリックします。この中から hello.exeの置いてあるフォルダ、前の例ではC:\cygwin\home\yamanouc\testwin32api へ移動して、ファイルhello.exeをダブルクリックします。
どうでしょうか?
大きな黒いウィンドウがありますね。これは、Cygwinで使うときのコンソールの 名残だと思います。我々はコンソールとのやり取りをすべてMS Windowsスタイルに したい(MS Windowsで見慣れたウィンドウを出したい)と思っているのですから、 この黒いウィンドウは邪魔です。
それを取り除くにはどうするか? コンパイルのときにもう1つフラッグを 追加します。
gcc -o hello.exe -mno-cygwin -Wl,--subsystem,windows hello.c
では早速Cygwinコンソールで、この通りに試してみましょう。どうですか? 今度は黒いコンソールが出なくて、Win32 APIのメッセージボックスだけが 出たと思います。
フラッグは、-Wl,--subsystem,windows です。このフレーズの間にスペース があってはいけません。またコンマはこのフレーズの中の区切りです。 約束ですので、この通り書いてください。その他のフラッグについては、 Cygwinのコンソールでmanコマンドを使って
man gcc
とすると、かなり下のほうに説明があります。私の環境では
-Wl,option Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas.
と書いてありました。
これで、Cygwinを使って、Win32 APIを使うプログラムをコンパイルすることが できるようになりました。(実はまだ完全ではないのですが)
では、次にWin32 APIをもう少し見てみましょう。