|
現: 2024-01-08 (月) 12:58:56 ゲスト |
| + | * ウィンドウ制御関係 [[GUIGUI00_man]] |
| + | #contents |
| | | |
| + | ***lib_openwindow |
| + | struct LIB_WINDOW *lib_openwindow(struct LIB_WINDOW *window, int slot, |
| + | int x_size, int y_size) : |
| + | |
| + | 機能: ウィンドウを開く。 |
| + | |
| + | window = NULL の時はmalloc(128)してそのポインタを返す。window != NULL の |
| + | ときはその値を返す。 |
| + | スロットを一つ使う。 |
| + | x_size, y_sizeはウィンドウの大きさで、ピクセル単位。x_size >= 88 にする。 |
| + | しないとタイトルがつけられなくなって仕様違反。 |
| + | このウィンドウが一つでも閉じられるとタスクごと終了させられる。 |
| + | |
| + | アプリがスタートしたら、できるだけ早くウィンドウを開こう! |
| + | ウィンドウを開いたら、できるだけ早くウィンドウタイトルを書き込もう! |
| + | |
| + | 参考になるサンプル:helloc4(introa) |
| + | |
| + | ***lib_openwindow1 |
| + | struct LIB_WINDOW *lib_openwindow1(struct LIB_WINDOW *window, int slot, |
| + | int x_size, int y_size, int flags, int base) : |
| + | |
| + | 機能: lib_openwindowとほぼ同じ。ウィンドウを細かく制御するためにシグナルを |
| + | 要求する。 |
| + | |
| + | flagsには要求するシグナルの種類を入れる。 |
| + | |
| + | ビット 増分 説明 |
| + | bit0 (0x01) +0 VRAMアクセス許可シグナル |
| + | bit0 (0x01) +1 VRAMアクセス禁止シグナル |
| + | bit0 (0x01) +2 ウィンドウ再描画 |
| + | bit0 (0x01) +3 ウィンドウ差分描画 |
| + | bit1 (0x02) +4 ウィンドウ位置変更 x,y がシグナルに続く |
| + | bit2 (0x04) +5 タイトルバーカラー変更 ステータスがシグナルに続く |
| + | bit3 (0x08) +6 ウィンドウクローズ要求 |
| + | bit4 (0x10) VRAMアクセス許可・禁止シグナル要求反転 |
| + | bit5 (0x20) +7 クローズ完了シグナル |
| + | bit6 (0x40) +8 リサイズに予約 |
| + | bit7 (0x80) 増分値を4倍にする。 |
| + | |
| + | 実際に来るシグナルは base+増分。 |
| + | VRAMアクセス禁止シグナルとウィンドウ再描画・差分描画には受信・完了通知 |
| + | 義務がある。lib_controlwindow参照。 |
| + | 描画シグナルが来たら、VRAMアクセス禁止中でも描画しなければならない。 |
| + | タイトルバーカラー変更やウィンドウ位置変更は、後で描画シグナルが来るので |
| + | 状態を覚えておくだけでよい。 |
| + | |
| + | 参考になる?:pokon0.c |
| + | |
| + | ***lib_closewindow |
| + | void lib_closewindow(int opt, struct LIB_WINDOW *window) : |
| + | |
| + | 機能: ウィンドウを閉じる。 |
| + | |
| + | optは0。 |
| + | ウィンドウはすぐ閉じるわけではないので、スロットを再利用するには拡張 |
| + | オープンを使ってクローズ完了シグナルを受け取ること。 |
| + | |
| + | ***lib_controlwindow |
| + | void lib_controlwindow(int opt, struct LIB_WINDOW *window) : |
| + | |
| + | 機能: ウィンドウの再描画・制御シグナル受信通知など。 |
| + | |
| + | optの各ビットで機能を指定する。 |
| + | |
| + | ビット 説明 |
| + | bit0 (0x0001) ウィンドウを塗りつぶし、枠を描画 |
| + | bit1 (0x0002) コンポーネント (テキストボックスなどのボックス) を描画 |
| + | bit8 (0x0100) 描画禁止シグナルの受信通知 |
| + | bit9 (0x0200) 再描画完了の通知 |
| + | |
| + | ***名無し? |
| + | void lib_execcmd0(0x0014, 0x0010, int *buf, 0x000c, 0x0000): |
| + | |
| + | 機能: シェル推奨の最大ウィンドウサイズを返す。 |
| + | |
| + | buf[0] = max_x_size; |
| + | buf[1] = max_y_size; |
| + | という具合に書き込まれる。このファンクションを利用しないで好きな大きさで |
| + | ウィンドウをオープンしても構わないが、大きめのウィンドウを開くときは参考 |
| + | にするとユーザフレンドリー。 |
| + | |
| + | 参考になるサンプル:kjpegls |
| + | |
| + | * こめんと欄 |
| + | #comment |