|
|
|
1-3-12. リソースとダイアログボックスWindowsには、リソースなる物があります。リソースは日本語では資源ですが、この2つの言葉は別の使い方をします。リソースは、RCファイルで示されるメニューやダイアログボックスのことです。資源とは、メモリやマウス・キーなどを含めたコンピュータ上の原材料を表します。リソースには以下の種類を管理しますが、ApHelloで使用しているものは、強調表示します。
リソースとファイル リソースはRCファイルで作成します。1つのアプリケーションに1つでないといけません。もし分割する場合は、#include 文で一括化する必要があります。リソースは、リソースコンパイラで、Windowsが理解できるデータ形式に変換されます。そして、リンカでコードのオブジェクトファイルと合体して、EXEファイルの一部に取り込まれます。よって、ApHello.rc は、ApHello.exe の中のどこかに存在します。ユーザは、LoadIcon,LoadCursor などのAPIをコールしないと、このデータをメモリ上にロードできません。クラスの登録時のメニューの指定の様に、何かのAPIでまとめてロードすることはあります。 アイコンとメニュー ApHello ICON DISCARDABLE "ApHello.ico"
ApHello MENU DISCARDABLE
BEGIN
POPUP "ファイル(&F)"
BEGIN
MENUITEM "バージョン情報(&A)...", IDM_ABOUT
MENUITEM SEPARATOR
MENUITEM "ApHelloの終了(&X)", IDM_EXIT
END
POPUP "表示(&V)"
BEGIN
MENUITEM "左側へ表示(&L)", IDM_LEFT
MENUITEM "中央へ表示(&C)", IDM_CENTER
MENUITEM "右側へ表示(&R)", IDM_RIGHT
END
END
アイコンは、ICON文でそのファイルを指定します。DISCARDABLE はいらなくなれば破棄可能なことを示しています。破棄とはメモリ上からデータを除くことですが、アイコンがいらなくなる事はありませんので、あまり意味がありません。ApHello が名前です。この名前をパラメータにして、LoadIcon 関数をコールすることで、メモリにロードします。アイコンは、クラスの登録時に、WNDCLASSEX 構造体の hIcon メンバに、LoadIcon したハンドルを設定することで、ウィンドウに関連付けます。
メニューは、MENU文で指定します。名前や DISCARDABLE はアイコンと同じです。種類が違えば同名でもかまいません。また名前でなく番号でもかまいません。メニューは、階層構造で、ファイル・表示があり、それにポップアップするサブメニューがいくつかあります。なんとなく理解できると思います。右の IDM_XXX がこのコマンドが実行されたときのコードです。またメニューを指定する時にも使用します。 ダイアログボックス ダイアログボックスは、座標がありますので、テキストエディタで作成する訳にはいかないでしょう。ダイアログエディタが必要です。ABOUTDLG DIALOG DISCARDABLE 0, 0, 191, 101
STYLE DS_MODALFRAME | WS_VISIBLE | WS_CAPTION
CAPTION "ApHelloのバージョン情報"
FONT 9, "MS Pゴシック"
BEGIN
CTEXT "ApHello for Windows9x",IDC_STATIC,33,8,148,8
CTEXT "The Sample of Windows API Topics.",IDC_STATIC,
33,20,148,8
CTEXT "Version 1.00",IDC_STATIC,33,35,148,8
CTEXT "(C) Copyright 1999 Arcpit Inc. All Right Reserved.",
IDC_STATIC,33,54,148,8
ICON "ApHello",IDC_STATIC,8,13,18,21
DEFPUSHBUTTON "OK",IDOK,136,73,50,14
LTEXT "ホームページ: http://www.tsp.ne.jp/~arcpit/",IDC_STATIC,
6,72,118,8
LTEXT "Eメール: arcpit@tsp.ne.jp",IDC_STATIC,6,84,79,8
END
ダイアログボックスは、名前、DIALOG 文、DISCARDABLE、そして先頭座標と幅と高さで始まります。ただしこの中で使用する座標は、特殊な座標系を使用します。次にスタイルとタイトルが続き、使用するフォントが来ます。BEGIN〜END で内部のコントロールを定義します。CTEXT は中央寄せで、LTEXTは左寄せのスタティックコントロールです。ICON はアイコンを表示し、DEFPUSHBUTTON は、ボタンを表します。この中で操作できるのは、[OK]ボタンだけです。他は表示するだけです。
ダイアログボックスは、DialogBox 関数で、メモリにロードで、表示します、ApHelloでは、WM_COMMAND メッセージの IDM_ABOUT の個所でコールします。ダイアログボックスの実際の操作は、ダイアログボックスプロシージャで行ないます。
|