|
|
||||||||||||||||||
|
2-4-5. ApMdisysプログラムの構成ApMdisysプログラムは複数のソースコードから構成されます。これらをコンパイル・リンクして実行ファイルを作成します。ここではそれらのファイルの内容とコンパイルの方法を説明します。ApMdisysのファイル群 ApMdisysサンプルは、次のファイルから構成されています。これらのファイルは、ここを押せばダウンロードできます。
ApMdisys.makファイル ApMdisysサンプルは、ApMdisys.makのメイクファイルでコンパイルします。このファイルは、ApMake用に適合されていますが、MS−DOSコマンドプロンプトでも実行できます。
ApMdisys.makファイルの内容は単純です。ApMdisys.cをコンパイルして、ApMdisys.rcをリソースコンパイルします。そしてobjとresファイルをリンクします。通常のライブラリの他に、リッチテキストコントロールを仕様していますので、Comctl32.libファイルを一緒にリンクします。 マイクロソフト以外をご使用の方は、ApMdisys.makファイルの内容を組み替える必要があるかも知れません。しかし、それでも内容は簡単なので難しくはないでしょう。 3つのアイコンファイル アイコンファイルは、3つあります。アプリケーション用に1つと、MDI子ウィンドウのために2つあります。アイコンは、特殊なビットマップデータで、大きなアイコン用と、小さなアイコン用の2つのデータが入っています。作成はアイコンエディタで行ないます。Visual−Cのデベロッパースタジオで作成する人が多いと思います。フリーソフトやシェアウェアにもアイコンエディタがあります。リソースのアイコンは番号で指定 ところで、アイコンの定義は、ApMdisys.rcのICON文で行ないます。他のリソースはすべて名前なのに、アイコンだけは、IDI_XXXの番号になっています。これには理由があります。例えば以下の様に定義します。ApMdisys ICON DISCARDABLE "ApMdisys.ico" ApHello ICON DISCARDABLE "ApHello.ico" ApRedit ICON DISCARDABLE "ApRedit.ico"これでコンパイルしexeファイルを作成すると、アイコンはABC順に並んでexeファイルに含まれます。そしてエクスプローラや各種ソフトでエェファイルを見ると、先頭のアイコンを一緒に表示します。つまりこの場合は、ApHelloが辞書順で最初になるので、ApHello.icoを表示してしまいます。よって番号にして、ApMdisys.icoが一番小さい番号にします。これで目的通りの表示をします。 ちなみに、番号にしたら、プログラムでは、MAKEINTRESOURCE マクロで変換する必要があります。 wc.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MAIN)); wc.hIcon = LoadIcon(hInstance,"ApMdisys");名前の場合は、上記の下段の様に名前をそのまま指定します。リソースの場合は、番号の方がメモリやファイルサイズの効率も良く、検索も必要無いのでスピードも上がります。プログラムコード的には、名前の方が簡単です。これらは、メニューやダイアログボックスなどのすべてのリソースについて言えます。 グローバル変数 ApMdisys.cには、12個のファイル内のグローバル変数があります。SDIではウィンドウプロシージャは1つでしたので、ローカル化できたのですが、MDIでは子ウィンドウのプロシージャもあり、それからもアクセスしますのでグローバル化しました。しかしApMdisysは小さいので、ファイル内のアクセスで済みますが、少し大きなシステムでは複数のファイルを必要とします。その時は、私たちの場合は、構造体化してヘッダファイルで定義します。そしてその構造体を S などの短い実体変数にし、S,hWndMain とアクセスします。 このApMdisysでは、HINSTANCE 変数をグローバル変数化しませんでした。あちこちで、HINSTANCE を必要としますが、その場合は、以下のコードで得ます。
|