MNWは軽量簡易なウィンドウライブラリです.
リソースが乏しい環境で,
イベント駆動スタイルのプログラミングを実現します.
ウィンドウ
イベント
イベント配送
イベント委譲と継承
ダイアログ
コンポ
フォーカス
ウィンドウの登録・削除
mnwWindow win; mnwRect r; mwnRect_SetXYWH(&r, /* self */ 10, 10, 100, 100); /* ウィンドウの位置,サイズ */ /* 登録 */ mnwWindow_Register((mnwWindow *)&win, /* self */ (mnwWindowCallback)mnwWindow_Callback, /* コールバック */ (mnwWindow *)&gRootWin, /* 親ウィンドウ */ &r); /* 領域 */ /* 削除 */ mnwWindow_UnRegister((mnwWindow *)&win);
イベントの生成・送信
mnwEvent e; /* 生成 */ mnwEvent_SetAll(&e, /* self */ kEvent_Redraw, /* 種類 */ nil, 0, 0); /* 引数 */ /* 送信 */ mnwEvent_SendTo(&e, /* self */ &win); /* 宛先 */
イベントループ
while ((event = mnwEvent_GetNext(true)) != nil){ /* 次のイベント */ if (!mnwEvent_Translate(event)){ /* 変換 */ mnwEvent_Dispatch(event); /* 配送 */ } }
コールバック
bool mnwButton_Callback(mnwButton *self, mnwEvent *event) { mnwEvent e; switch (event->type){ case kEvent_Create: mnwWindow_Callback((mnwWindow *)self, event); /* super */ return mnwButton_Initialize(self); break; case kEvent_Destroy: mnwWindow_Callback((mnwWindow *)self, event); /* super */ return mnwButton_Finalize(self); break; case kEvent_AddChild: case kEvent_RemoveChild: return false; break; <略> case kEvent_KeyDown: return mnwButton_KeyDown(self, event); break; default: /* superにdelegate */ return mnwWindow_Callback((mnwWindow *)self, event); break; } /* イベントを処理しない */ return false; }
kEvent_None kEvent_Create kEvent_Destroy kEvent_Show kEvent_Hide kEvent_SetFocus kEvent_GainFocus kEvent_LostFocus kEvent_Timer kEvent_KeyDown kEvent_KeyUp kEvent_Command kEvent_Redraw kEvent_Quit kEvent_SetRect kEvent_SetParent kEvent_AddChild kEvent_RemoveChild kEvent_SetForeColor kEvent_SetBackColor kEvent_GetRect kEvent_SetID kEvent_GetID kEvent_SetOptionダイアログ関係イベント
kEvent_SetTabStop kEvent_DoModal kEvent_EndModalクリップボード関係イベント
kEvent_Cut kEvent_Paste kEvent_Copy kEvent_Clearコンポ関係イベント
kEvent_SetFont kEvent_SetAlign kEvent_SetStyle kEvent_SetBuffer kEvent_SetText kEvent_UnsetText kEvent_InsertText kEvent_SetCommand kEvent_GetResult kEvent_SetCursor kEvent_SetMultiLine kEvent_SetPixmap kEvent_GainFocusNotify kEvent_LostFocusNotify kEvent_ChangedNotify
ラベルコンポ
ボタンコンポ
リストコンポ
エディットコンポ
NOTE: 書きかけ
$Id: mnwapi.html,v 1.1.1.1 1999/02/28 06:47:50 furukawa Exp $
Copyright (c) 1998 FURUKAWA Yo. All rights reserved.
E-mail: you@ss.iij4u.or.jp