{{include unfinished_page}} ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[8章 オーバーレイプログラムの作成|8章 オーバーレイプログラムの作成]] ,{BSIZE:0|RIGHT}[[10章 MSXView標準データ]] →  この章では、MSXView基本データ構造について説明します。 !!9.1 1バイト型の別名定義と定数名  1バイト型の別名定義と定数名は、次のように定義されています。 #define TINY char /* 0〜255を表す数値型 */ #define BOOL char /* 論理型 */ #define TRUE 1 /* (~FALSE)ではなく(!FALSE) */ #define FALSE 0 /* C言語の論理式の値に対応 */ #define STATUS char /* 成功・失敗型 */ #define OK 0 #define ERROR 0xff #define HANDLE char /* ハンドル型 */ #define NEW (char)0 /* 新規ハンドルの割り当て要求 */ #define ROOTBD 1 /* ルートボード */ #define SYSPEN 1 /* 標準ペン */ #define BDPEN 2 /* ルートボードのペン */ #define SYSFONT 1 /* 標準フォント */ #define COLOR char !!9.2 基本的な構造体  画面表示で使用する構造体は、以下のように宣言されています。 typedef struct _pos { /* 座標の指定に使用(主に画面座標) */ int xp; /*  負の座標はウィンドウ外なので、 */ int yp; /*  表示されないが論理的には有効 */ } POS; typedef struct _area { /* POS+領域サイズ */ int xp; /*  本質的にはPOSだが、この方が */ int yp; /*  初期化をシンプルに書ける。 */ unsigned xs; /*  サイズは非負なので論理的だが */ unsigned ys; /*  計算時の型変換には要注意。 */ } AREA; !!9.3 ディスプレイマネージャの構造体  ディスプレイマネージャで使用する構造体は、以下のように宣言されています。 typedef struct _win { /* ウィンドウの状態 */ HANDLE block; /* ビットブロック(FIXなら0) */ TINY status; /* ウィンドウスタイル+ウィンドウの種類 */ AREA area; /* グローバル座標 */ HANDLE defpen; /* デフォルトペン */ HANDLE deffont; /* デフォルトフォント */ HANDLE curpen; /* カレントペン */ HANDLE curfont; /* カレントフォント */ } WIN; !!9.3.1 ウィンドウスタイルの定数  ウィンドウの形状を指定する構造体は、以下のように定義されています。 #define FIX (char)128 /* ビットブロックなし */ #define TWIN (char)0 /* なにもなし */ #define CWIN (char)1 /* 枠なし */ #define FWIN (char)2 /* 一重枠 */ #define RWIN (char)3 /* 角の丸い一重枠 */ #define IWIN (char)4 /* インデックス枠 */ #define SWIN (char)5 /* 影付き一重枠 */ #define BWIN (char)6 /* 影付き二重枠 */ !!9.4 ビットブロックマネージャの構造体  ビットブロックマネージャで使用する構造体は、以下のように宣言されています。 typedef struct _blcinfo { TINY lotnum; /* ロット番号 */ LONG start; /* VRAMポインタ */ LONG length; /* ブロックデータの長さ */ WORD xs; /* 横方向の大きさ */ WORD ys; /* 縦方向の大きさ */ } BLCINFO; !!9.5 イベントマネージャの構造体  イベントマネージャで使用する構造体は、以下のように宣言されています。 typedef struct _event { /* イベントレコード */ TINY kind; /* イベントの種類 */ POS where; /* カーソルのグローバル座標 */ LONG bstat; /* ボタン(含むシフトキー)の状態 */ char keycode; /* シフトを無視したコード */ TINY kstat; /* シフト(含む特殊キー)の状態 */ TINY keymap; /* キーマップ・コード */ TINY msg[4]; /* 予備 */ } EVENT; !9.5.1 イベントの定数  イベントの種類を指定する定数は、次のように定義されています。 #define KEYEVT 1 /* キーが押された */ #define TRIGDN 2 /* 1stボタンが押された */ #define TRIGUP 3 /* 1stボタンが離された */ #define ABORT 4 /* 2ndボタンが押された */ #define ABORTUP 5 /* 2ndボタンが離された */ #define KANJI 6 /* 予約 */ !9.5.2 ウィンカの構造体  ウィンカの状態を表す構造体は、以下のように宣言されています。 typedef struct _wink { /* ウィンカ */ HANDLE kind; /* 所属するウィンドウ */ AREA where; /* ローカル座標 */ unsigned speed; /* 点滅スピード(ビット指定) */ TINY rev; /* 反転時のxor値(0xfe) */ } WINK; !9.5.3 キーボードの構造体  キーボードの状態を表す構造体は、以下のように宣言されています。 typedef struct _locks { /* キーボードの状態 */ TINY config; /* キー配列(0〜2) */ TINY kana; /* かなロック */ TINY caps; /* CAPSロック */ } LOCKS; !9.5.4 マウスカーソルの構造体  マウスカーソルの状態を表す構造体は、以下のように宣言されています。 typedef struct _cursor { /* マウスカーソルの形状 */ TINY xhot; /* pat内のどのドットを中心座標 */ TINY yhot; /* とするかを指定(0〜7) */ TINY logic; /* 画面との論理演算 */ COLOR col1; /* pat1の色 */ TINY pat1[32]; /* 16×16のビットパターン */ COLOR col2; /* pat2の色 */ TINY pat2[32]; /* 16×16のビットパターン */ } CURSOR; !!9.6 グラフパックの構造体  グラフパックで使用する構造体は、以下のように宣言されています。 typedef struct _rgb { /* パレットの色指定などで使用する */ TINY red; /* 0〜7 */ TINY green; /* 0〜7 */ TINY blue; /* 0〜7 */ } RGB; typedef struct _tile { /* PEN構造体のためのサブ構造体 */ TINY sw; /* 色づけに関する指定 */ COLOR on; /* patのonドットの色 */ COLOR off; /* patのoffドットの色 */ TINY pat[8]; /* 8×8のビットパターン */ } TILE; /* TILE.swの意味は次のとおり */ typedef struct _grafpen { /* 文字以外の描画の基本となる */ TINY line[4]; /* ラインスタイル */ TINY xhot; /* pat内の度のドットを中心座標 */ TINY yhot; /* とするかを指定(0〜7) */ TINY xs; /* pat(ペン先)のサイズを指定 */ TINY ys; /* (0〜7) */ TINY pat[8]; /* ペン先のパターン */ TINY pen; /* 点、線の描画用 */ TINY fill; /* 塗りつぶし用 */ TINY back; /* ウィンドウ消去用 */ } PEN; #define ONDOT (char)32 /* onドット有効 */ #define OFFDOT (char)16 /* offドット有効 */ !!9.7 フォントパックの構造体  フォントパックの構造体は、以下のように宣言されています。 !!9.8 テキストマネージャの構造体  テキストマネージャの構造体は、以下のように宣言されています。 !!9.9 メニューマネージャの構造体  メニューマネージャの構造体は、以下のように宣言されています。 !9.9.1 POPUP.headおよびMENU.headに設定する定数  POPUP.headおよびMENU.headに設定する定数は、次のように定義されています。 #define CHK (char)128 /* チェックマーク */ #define MSK (char)64 /* 表示、選択禁止 */ #define DIS (char)32 /* 選択禁止 */ #define LIN (char)16 /* 線(選択禁止) */ #define CEN (char)8 /* センタリング */ #define BLD (char)4 /* 太字 */ #define CNT (char)2 /* 改行せずに継続する */ #define FIN (char)1 /* 終了(最後の要素である印) */ #define NON (char)0 /* 何も指定しない場合 */ !!9.10 コントロールマネージャの構造体  コントロールマネージャの構造体は、以下のように宣言されています。 !9.10.1 標準コントロール番号の定数  標準コントロール番号は、次のように定義されています。 !9.10.2 コントロールのパート番号の定数  コントロールのパート番号は、次のように定義されています。 !9.10.3 コントロールメッセージへのキャスト用マクロ  コントロールメッセージへのキャスト用マクロは、次のように定義されています。 !9.10.4 コントロールドライバのバリエーション番号  コントロールドライバのバリエーション番号は、次のように定義されています。 !!9.11 プリンタドライバの構造体  プリンタドライバの構造体は、以下のように宣言されています。 !9.11.1 プリンタドライバの機能コード  プリンタドライバの機能コードは、次のように定義されています。 #define PD_INIT 0 /* プリンタドライバの初期化 */ #define PD_OPEN 1 /* プリンタの印刷開始宣言 */ #define PD_CLOSE 2 /* プリンタの印刷終了宣言 */ #define PD_PRINT 3 /* 印刷の実行 */ #define PD_MENU 4 /* 用紙の設定 */ #define PD_START 5 /* 開始・終了ページ、印刷枚数の設定 */ #define PD_PAGE 6 /* 印刷開始メッセージの表示 */ !!9.12 その他の構造体  その他の構造体は、以下のように宣言されています。 !9.12.1 オーバーレイで使用する構造体  オーバーレイで使用する構造体は、次のように宣言されています。 !9.12.2 モジュール名の宣言  コントロールドライバのバリエーション番号は、次のように定義されています。 !9.12.3 日付を表す構造体  日付を表す構造体は、次のように宣言されています。 typedef struct _date { int year; /* 1980〜2079 */ TINY month; /* 1〜12 */ TINY date; /* 1〜31 */ TINY week; /* 0=日曜、…6=土曜 */ } DATE; !9.12.4 時間を表す構造体  時間を表す構造体は、次のように宣言されています。 typedef struct _time { TINY hour; /* 0〜23 */ TINY minute; /* 0〜59 */ TINY second; /* 0〜59 */ TINY sec100; /* システム予約 */ } TIME; !9.12.5 MSX-DOSのDPBを表す構造体  MSX-DOSのDPBを表す構造体は、次のように宣言されています。 !9.12.6 MSX-DOSのFCPを表す構造体  MSX-DOSのFCPを表す構造体は、次のように宣言されています。 typedef struct _fcb { /* MSX-DOSのFCB */ TINY drive; /* Drive name. 0=default, 1=A */ TINY name[8]; /* Filename */ TINY ext[3]; /* Extention */ unsigned crblk; /* Current block */ unsigned recsiz; /* Record size */ long size; /* File size */ unsigned date; /* Created date */ unsigned time; /* Created time */ TINY devid; /* device ID */ TINY dirloc; /* Directory location */ unsigned first; /* First cluster of a file */ unsigned last; /* Last cluster of a file */ unsigned access; /* Last cluster accessed */ TINY crrec; /* Current record */ long random; /* Random record */ } FCB; ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[8章 オーバーレイプログラムの作成|8章 オーバーレイプログラムの作成]] ,{BSIZE:0|RIGHT}[[10章 MSXView標準データ]] →