イベント構造体とイベントコード
STRUCTURE
Macintosh でのイベント構造体と、そのイベントコード表です。
このイベント情報は、gotEvent := WaitNextEvent(everyEvent, myEvent, 15 NIL) みたいな感じでタスク制御をほかに移すと同時に待って、取得したイベント情報を、イベントコードで分岐処理する…。それの半無限ループによって、イベントループを行うようです。
イベントの構造体
typedef UInt16 EventKind;
struct EventRecord
{
EventKind what; // イベントコード
UInt32 message; // イベントメッセージ
UInt32 when; // Mac が起動してからの経過 Tick 数
Point where; // マウスの位置
EventModifiers modifiers; // modifier flags
};
イベントコード
enum
{
nullEvent = 0; // 保持しているイベントなし
mouseDown = 1; // マウスダウンイベント
mouseUp = 2; // マウスアップイベント
keyDown = 3; // キーボードが押された
keyUp = 4; // キーボードが離された
autoKey = 5; // キーボードが押され続けている(リピート中?)
updateEvt = 6; // ウィンドウにアップデート処理が必要(再描画?)
diskEvt = 7; // ディスクが挿入された(マウント時?)
activateEvt = 8; // ウィンドウに、アクティベート/ディアクティベートが発生
osEvt = 15; // OS イベント
kHighLevelEvent = 23; // ハイレベルイベント
};