Windows Programming
CODE ゼロ
※ フォントを変えるのがせいぜいの楽しみなので、フォントをいろいろ変えてみます。しばらくフォントが統一されないかもしれません。
// // program "challange1.cpp" // #include <windows.h> int WINAPI WinMain( HINSTANCE hCurInst, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow ) { MessageBox( NULL , "かーめーはーめーはぁっ" , "Hello World !" , MB_OK | MB_APPLMODAL ) ; return 0 ; }
ちょうど C 言語の void main() { printf( "Hello World !") ; return;} に相当します。C 言語の基礎に関しては、いずこなりで、目を通すくらいはしておいてください。
記述して保存したら、コンパイルは、
bcc32 -tW challange1.cpp
です。
challange1 [リターン] として実行してみましょう。
なんだ、void main... に相当するものって、ちゃんとあるんじゃん、という新発見がありましたか?
あるいは、#include ? MessageBox ってなんなんだ?
MessageBox こそ、これから使う "Windows API 関数" の一つです。NULL は 0 と同じ。
WinMain も、Windows API 関数です。WinMain はいつもあって、名前の決まっている関数です。この関数が特別なのは、自分で(あなたが)関数の中身を書かなくてはいけないということです。そういう API 関数は、Place-Holder といって他にもいくつかありますが、普通は API 関数は使うだけで、内容を書く必要のないものばかりです。
上のプログラムで、もし WinMain関数 をとり去ってしまったら、プログラムは空になってしまうから、 "何も意味がない" ことはわかると思います(意味がありません)。そして、コンパイルすら通りません。この、"WinMain" 関数は、.exe 実行形式のファイルを作成する場合には、常に記述しておかなければならない関数です。注1
WinMain の役割をする関数は、他にはなく、"この名前でこれ一つ" だと思っておいてください。そして、その引数(パラメータ)のかたち(並び、と型)と、戻り値、== プロトタイプ も決められていて、その決まった形にあわせて常に同じでなければなりません。(いくつか例に触れていくうちにわかります。)※ (DLL の場合は DllMain とかになりますが、それはとくに DLL を作る場合の話。今は、そして普通は EXE です。いづれにしろ、このような「エントリーポイントのための関数」 のバラエティーは、void main() も含めても、きわめて限定的です。)
注1 WinMain は、Win32 : 32 ビットの Win32 アプリケーションの場合です。16 ビット、コンソールアプリケーションの場合は、void main() や、int main()、int main(int argc, char *argv[]) で、この3つあたりが、"C 言語" の知識としては常識的な線です。はじめに 「int」 のついてるものは、これを省略することができます。(戻り値の)型が省略されている場合、C 言語では自動的に int 型、とみなされるからです。残念ながら、この3つで全て、と断言できないのが残念です。コンパイラの製作側(各会社の仕様)次第で、いくらでも拡張できるからです。こだわる場合は、どこかに、「C 言語の規格(ANSI-C)」に関する正式な文書があれば、それを見るのが一番安心です。これらでは、main が固有です。しばしば、"main 関数" と呼ばれます。 |
さて、MessageBox 関数には、Return Value : 返り値 というものがあるのですが・・・
トップ インデックス [次へ]