GUIコール リファレンス マニュアル
目次
概要
型
アプリケーション関数
ウインドウ操作
描画関数
入力制御関数
クリップボード関数
ドラッグアンドドロップ関数
その他
サンプル
索引
GUIで動作するアプリケーションを作成するには gc_〜 で定義される C 言語の関数を呼び出します(GUIコール)。
必要なファイルは gc.h (mpltype.h, cputype.h) と gc.a (kc.a) です。
以降でGUIコールに必要な型及び、個々の関数を説明します。
MPL で定義される型を以下に記述します。
GUIコール用に追加される型を以下に記述します。
typedef struct _RGB {
unsigned char r ;
unsigned char g ;
unsigned char b ;
} RGB ;
typedef struct _RGB_IMG {
unsigned long w ;
unsigned long h ;
RGB *rgb ;
} RGB_IMG ;
typedef struct _RGB_BUF {
unsigned long type ;
unsigned long w ;
unsigned long h ;
void *buf ;
} RAW_BUF ;
typedef struct _POS {
long x ;
long y ;
} POS ;
typedef struct _RECT {
POS pos[2] ; /* 左上原点で [0]左上 [1]右下 */
} RECT ;
gc_init(), gc_main(), gc_exit() の 3 つの関数は GUI アプリケーション全体を制御します。
引数
戻り値
説明
GUIライブラリーを初期化します。
GUIコールを使う場合は最初にこれを呼び出してください。
引数
戻り値
説明
GUIアプリケーションのイベント駆動を開始します。
この関数からは gc_exit() を呼び出してGUI処理を終了するまで戻ってきません。
この関数を呼び出す前に最低1つはウインドウを作成しておいてください。
なんの準備も無く呼び出すと無限ループします。
引数
戻り値
説明
GUIアプリケーションを終了し、ライブラリーを後始末します。
GUIアプリケーションを終了させる操作(例えばメニューやクローズボタン)のイベント処理で呼び出してください。
gc_init() の成功後、他の初期化に失敗して gc_main() を呼び出さない場合は直接これを呼び出してください。
引数
HANDLE | hwnd | : | メッセージ処理を許可するウインドウ |
戻り値
説明
1回だけメッセージ処理を実行します。
引数が0の場合は普通に処理しますがウインドウハンドルを指定した場合はそのウインドウ及び子ウインドウ以外へのメッセージは処理せずに捨てます。
以下の関数はウインドウを操作します。
引数
long* | width | : | スクリーンの幅を受け取る領域 |
long* | height | : | スクリーンの高さを受け取る領域 |
long* | aspect_w | : | ピクセルの水平アスペクト比を受け取る領域 |
long* | aspect_h | : | ピクセルの垂直アスペクト比を受け取る領域 |
long* | rawbuf_type | : | RAWバッファ形式 |
戻り値
説明
スクリーンの情報を取得します。
rawbuf_type は RAWBUF_X68K_1T と RAWBUF_X68K_4G と RAWBUF_X68K_16G の3種類の値を戻します。
それぞれの意味は「テキストVRAM(2色モード)」と「グラフィックVRAM(16色モード)」と「グラフィックVRAM(65536色モード)」です。
2色モードのパレットは固定値で0.黒 1.白です。
16色モードのパレットは固定値で以下の通りです。
NO | R | G | B | NO | R | G | B |
0 | 0 | 0 | 0 | 8 | 0 | 255 | 0 |
1 | 128 | 128 | 128 | 9 | 0 | 128 | 128 |
2 | 255 | 255 | 255 | 10 | 0 | 255 | 255 |
3 | 128 | 0 | 0 | 11 | 0 | 0 | 128 |
4 | 255 | 0 | 0 | 12 | 0 | 0 | 255 |
5 | 128 | 128 | 0 | 13 | 128 | 0 | 128 |
6 | 255 | 255 | 0 | 14 | 255 | 0 | 255 |
7 | 0 | 128 | 0 | 15 | 64 | 64 | 64 |
引数
戻り値
説明
ルートウインドウに壁紙を設定します。
指定したイメージはシステムが管理するので削除する必要はありません
※壁紙として使用中に削除した場合は壁紙が解除されます。
引数
HANDLE | hwnd | : | ルートウインドウのマウスイベントを処理するウインドウ |
戻り値
説明
ルートウインドウのマウスイベントを処理するウインドウを指定します。
指定したウインドウにはルートウインドウに対するマウスイベントがリダイレクトされるのでポップアップメニュー等、必要な機能拡張ができます。
引数
HANDLE | parent | : | 親ウインドウ。0 なら親ウインドウはルートウインドウ |
const WINDOW_FUNC* | func | : | イベント処理関数 |
const RECT* | rect | : | 親ウインドウに対するウインドウの配置 |
unsigned long | type | : | ウインドウのオプション設定 |
戻り値
説明
ウインドウを開きます。
rect の書式は3種類有り、そえぞれ意味が異なります。
全て 0 | : | 位置・サイズの両方をシステムに任せる(単純なランダム) |
pos[0] のみ値指定し pos[1] は 0 | : | pos[0] にはx=幅/y=高さ位置を指定し、位置はシステムに任せる |
全て値指定 | : | pos[0] には左上座標、pos[1] には右下座標を指定する |
※ウインドウサイズのみをシステムに任せる事はできません。
ウインドウの動作は引数 func によってオープン時に決定します。
WINDOW_FUNC 型は各イベント発生時のコールバック関数のアドレスを羅列した物です。
処理が必要なコールバック関数はアドレスを設定し、他はNULLにしてください。
内容は以下の通りです。
typedef struct _WINDOW_FUNC {
void (*on_window_open)(HANDLE hwnd) ;
int (*on_window_close)(HANDLE hwnd) ;
void (*on_window_visible)(HANDLE hwnd, int show) ;
void (*on_window_move)(HANDLE hwnd, const POS *pos) ;
void (*on_window_size)(HANDLE hwnd, const POS *pos) ;
void (*on_window_paint)(HANDLE hwnd, const RECT *rect) ;
void (*on_mouse_enter)(HANDLE hwnd, const POS *pos) ;
void (*on_mouse_leave)(HANDLE hwnd) ;
void (*on_mouse_move)(HANDLE hwnd, const POS *pos) ;
void (*on_mouse_ldown)(HANDLE hwnd, const POS *pos) ;
void (*on_mouse_lup)(HANDLE hwnd, const POS *pos) ;
void (*on_mouse_rdown)(HANDLE hwnd, const POS *pos) ;
void (*on_mouse_rup)(HANDLE hwnd, const POS *pos) ;
void (*on_keyboard_getfocus)(HANDLE hwnd) ;
void (*on_keyboard_lostfocus)(HANDLE hwnd) ;
void (*on_keyboard_push)(HANDLE hwnd, unsigned char ch) ;
void (*on_keyboard_release)(HANDLE hwnd, unsigned char ch) ;
void (*on_keyboard_char)(HANDLE hwnd, unsigned char ch) ;
void (*on_menu)(HANDLE hwnd, const POS *pos) ;
void (*on_drop)(HANDLE hwnd, int type, void *data, unsigned char opt_key) ;
} WINDOW_FUNC ;
void | (*on_window_open)(HANDLE hwnd) | : | オープン直後の処理 hwnd…対象のウインドウ |
int | (*on_window_close)(HANDLE hwnd) | : | クローズ直前の処理 hwnd…対象のウインドウ 戻り値 0.closeをキャンセル !0.クローズする |
void | (*on_window_visible)(HANDLE hwnd, int show) | : | ウインドウの表示状態が変った直後の処理 hwnd…対象のウインドウ show…0.非表示化 !0.表示化 |
void | (*on_window_move)(HANDLE hwnd, const POS *pos) | : | ウインドウが移動した直後の処理 hwnd…対象のウインドウ pos…移動位置 |
void | (*on_window_size)(HANDLE hwnd, const POS *pos) | : | ウインドウがリサイズした直後の処理 hwnd…対象のウインドウ pos…サイズ |
void | (*on_window_paint)(HANDLE hwnd, const RECT *rect) | : | 描画要求 hwnd…対象のウインドウ rect…描画が必要な矩形 |
void | (*on_mouse_enter)(HANDLE hwnd, const POS *pos) | : | マウスがウインドウ上に乗った直後の処理 hwnd…対象のウインドウ pos…位置 |
void | (*on_mouse_leave)(HANDLE hwnd) | : | マウスがウインドウから離れた直後の処理 hwnd…対象のウインドウ
|
void | (*on_mouse_move)(HANDLE hwnd, const POS *pos) | : | マウスがウインドウ上を移動した直後の処理 hwnd…対象のウインドウ pos…位置 |
void | (*on_mouse_ldown)(HANDLE hwnd, const POS *pos) | : | マウスの左ボタンを押した直後の処理 hwnd…対象のウインドウ pos…位置 |
void | (*on_mouse_lup)(HANDLE hwnd, const POS *pos) | : | マウスの左ボタンを放した直後の処理 hwnd…対象のウインドウ pos…位置 |
void | (*on_mouse_rdown)(HANDLE hwnd, const POS *pos) | : | マウスの右ボタンを押した直後の処理 hwnd…対象のウインドウ pos…位置 |
void | (*on_mouse_rup)(HANDLE hwnd, const POS *pos) | : | マウスの右ボタンを放した直後の処理 hwnd…対象のウインドウ pos…位置 |
void | (*on_keyboard_getfocus)(HANDLE hwnd) | : | ウインドウがキーフォーカスを得た直後の処理 hwnd…対象のウインドウ
|
void | (*on_keyboard_lostfocus)(HANDLE hwnd) | : | ウインドウがキーフォーカスを失った直後の処理 hwnd…対象のウインドウ
|
void | (*on_keyboard_push)(HANDLE hwnd, unsigned char ch) | : | ウインドウがキー押下を受け取った直後の処理 hwnd…対象のウインドウ ch…キーコード |
void | (*on_keyboard_release)(HANDLE hwnd, unsigned char ch) | : | ウインドウがキー開放を受け取った直後の処理 hwnd…対象のウインドウ ch…キーコード |
void | (*on_keyboard_char)(HANDLE hwnd, unsigned char ch) | : | ウインドウがキー入力を受け取った直後の処理 hwnd…対象のウインドウ ch…キーコード |
void | (*on_menu)(HANDLE hwnd, const POS *pos) | : | ウインドウメニューが要求された時の処理 hwnd…対象のウインドウ pos…タイトルバーの右クリックされた位置(スクリーン座標) |
void | (*on_drop)(HANDLE hwnd, int type, void *data, unsigned char opt_key) | : | データがドロップされた時の処理 hwnd…対象のウインドウ type…データの種類 data…データ opt_key…ドラッグされた時に押された特殊キー |
ウインドウのタイプには以下の物が有り、必要なフラグを or で重ねて指示します。
WINDOW_TYPE_VISIBLE | : | オープン時に表示状態にする |
WINDOW_TYPE_FRAMED | : | ウインドウマネージャーによるフレームを付加する |
WINDOW_TYPE_RESIZEABLE | : | ウインドウをリサイズ可能にする ※WINDOW_TYPE_FRAMEDが必要 |
WINDOW_TYPE_ICONBTN | : | ウインドウをアイコン化可能にする ※WINDOW_TYPE_FRAMEDが必要 |
WINDOW_TYPE_ALL | : | 上記全てのフラグをON |
引数
戻り値
説明
ウインドウを閉じます。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const RECT* | rect | : | 新たな配置矩形 |
int | zorder | : | 重なり状態 0.現状維持 1.最前面 -1.最奥 |
戻り値
説明
ウインドウの配置(位置・サイズ)を変更します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
int | show | : | 表示状態 0.非表示にする !0.表示する |
戻り値
説明
ウインドウの表示状態を変更します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const RECT* | rect | : | 無効化する矩形 |
戻り値
説明
ウインドウの表示を無効化し再描画イベントを発生させます。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const RECT* | rect | : | 描画を反映する矩形、NULLならクリップOFF |
戻り値
説明
描画命令に対するクリッピング領域を設定します。
通常 on_window_paint() コールバック内では事前に要求矩形が設定済みで、かつ事後にリセットされます。
on_window_paint() 外での描画時、もしくは on_window_paint() の設定を上書きする場合に呼び出してください。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const RGG_IMG* | image | : | アイコン画像 NULLならデフォルト |
戻り値
説明
ウインドウのアイコン(アイコン化時の画像)を設定します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const char* | caption | : | タイトル文字列 NULLなら空白 |
戻り値
説明
ウインドウのタイトル文字列を設定します。
ウインドウのタイトル文字列はフレームを持たないウインドウでは無意味です。
引数
HANDLE | hwnd | : | 対象のウインドウ |
char* | buff | : | タイトル文字列を受け取る領域 |
unsigned long | buff_len | : | 領域のサイズ |
戻り値
説明
ウインドウのタイトル文字列を取得します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
void* | ptr | : | 記憶させるポインタ |
戻り値
説明
ウインドウ固有の情報として1つのポインタアドレスを記憶させます。
引数
戻り値
説明
ウインドウ固有の情報としての1つのポインタアドレスを取得します。
エラー終了時には NULL が戻りますがエラーと正常な NULL は区別が付ません。
引数
戻り値
親ウインドウのハンドル 親がルートウインドウの場合は 0 が戻る フレームウインドウは無視される |
説明
ウインドウの親を取得します。
引数
戻り値
説明
フレームウインドウを取得します。
フレームウインドウを持たない場合は自身のハンドルを戻します。
引数
戻り値
説明
フレームウインドウからクライアントウインドウを取得します。
フレームウインドウ以外を指定した場合は自身を戻します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
RECT* | rect | : | 矩形を受け取る領域 |
戻り値
説明
ウインドウの矩形をクライアント座標系で戻します。
クライアント座標系は左上が(0, 0)で右下方向に増加する座標系です。
引数
HANDLE | hwnd | : | 対象のウインドウ |
RECT* | rect | : | 矩形を受け取る領域 |
戻り値
説明
ウインドウの矩形を親ウインドウの座標系で戻します。
このウインドウが親ウインドウのどの領域かを示します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
RECT* | rect | : | 矩形を受け取る領域 |
戻り値
説明
ウインドウの矩形をスクリーン座標系で戻します。
このウインドウがスクリーンのどの領域かを示します。
以下の関数は描画処理をします。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const RGB* | rgb | : | 描画色 |
戻り値
説明
ウインドウに対する描画色を設定します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const RGB* | rgb | : | 描画色を受け取る領域 |
戻り値
説明
ウインドウに対する描画色を取得します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
int | flg | : | 描画属性 0.通常 1.XOR |
戻り値
説明
ウインドウに対するXOR描画属性を設定します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
int* | flg | : | 描画属性を受け取る領域 |
戻り値
説明
ウインドウに対するXOR描画属性を取得します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const POS* | pos | : | 描画位置 |
戻り値
説明
ウインドウに点を描画します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const POS* | pos | : | 線分座標の配列 |
unsigned long | nof_pos | : | 配列要素数 |
戻り値
説明
ウインドウに連続線分を描画します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const RECT* | rect | : | 描画矩形 |
戻り値
説明
ウインドウに矩形を描画します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const RECT* | rect | : | 描画矩形 |
戻り値
説明
ウインドウに中を塗りつぶした矩形を描画します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const POS* | pos | : | コピー先の位置(左上座標) |
const RECT* | src | : | コピー元の矩形 |
戻り値
説明
ウインドウ状の矩形イメージを別な場所にコピーします。
コピー元、コピー先の両方の矩形がウインドウによりクリッピングされていない事が条件です。
部分的にでもクリッピングされている場合はコピーせずに処理が失敗します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const POS* | pos | : | 描画位置(左上) |
const char* | s | : | 描画文字列 |
const RECT* | clip | : | 描画許可矩形 NULL.クリップ無し |
戻り値
説明
ウインドウに文字列を描画します。
clip を指定した場合は clip 範囲外にはみ出した部分は描画しません。
引数
unsigned long | w | : | 横ピクセル数 |
unsigned long | h | : | 縦ピクセル数 |
戻り値
説明
イメージを作成します。
イメージはウインドウに描画するための画像データです。
描画用に最適化されているため関数を使って間接的に編集して使用します。
引数
戻り値
説明
イメージを削除します。
引数
HANDLE | himg | : | 対象のイメージ |
const POS* | pos | : | イメージ上の出力先(左上) |
const RGB_IMG* | image | : | 画像データ |
const RECT* | rect | : | 画像データ上の入力矩形 |
戻り値
説明
イメージの内容を設定します。
引数
HANDLE | himg_dest | : | コピー先イメージ |
const POS* | pos | : | コピー先イメージ上の出力先(左上) |
const HANDLE | himg_src | : | コピー元イメージ |
const RECT* | rect | : | コピー元イメージの入力矩形 |
戻り値
説明
イメージからイメージへ内容をコピーします。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const POS* | pos | : | 描画先(左上) |
const HANDLE | himg | : | 描画するイメージ |
const RECT* | src | : | 描画するイメージの矩形 |
戻り値
説明
ウインドウにイメージを描画します。
引数
HANDLE | hwnd | : | 対象のウインドウ |
const POS* | pos | : | 描画先(左上) |
const RAW_BUF* | raw_buf | : | 描画するRAWイメージ |
const RECT* | src | : | 描画するイメージの矩形 |
戻り値
説明
ウインドウにRAWイメージを描画します。
RAWイメージとはデバイスに依存したイメージデータの事です。
色データの変換処理が無い分高速ですがモードに応じたデータを渡す必要があります。
モードは gc_get_root_info() で取得できます。
以下の関数は入力を制御します。
引数
戻り値
説明
ウインドウにフォーカスを設定します。
引数
int | type | : | マウスの形状 0.非表示 1.矢印 2.時計 |
戻り値
説明
マウスカーソルの形状を設定します。
引数
戻り値
説明
マウスカーソルの形状を取得します。
type に付いてはgc_set_mouse_type()を参照してください。
引数
const POS* | pos | : | マウスを移動するスクリーン座標 |
戻り値
説明
マウスカーソルの位置を設定します。
引数
戻り値
説明
マウスカーソルの位置(スクリーン座標)を取得します。
引数
戻り値
説明
指定したウインドウにマウスイベントを占有させます。
引数
戻り値
説明
マウスイベントの占有を止めます。
以下にクリップボードを操作する関数を記述します。
引数
int | type | : | データタイプ |
void* | data | : | データ |
unsigned long | size | : | データサイズ |
戻り値
説明
指定データをクリップボードに貼り付けます。
元々有ったデータは新たなデータにより上書きされます。
type には以下の種類が有ります。
CLIP_NULL | : | 空 |
CLIP_TEXT | : | 文字列 |
CLIP_IMG | : | 画像(RGB_IMG) |
CLIP_PATH | : | ファイルパス(空白で区切られた複数のフルパス文字列) |
画像はRGB_IMG構造体に続けて実データを配置したひと固まりの形式です
ファイルパスは文字列と同じですが複数のパスを含む場合は各パスが空白で区切られます
引数
int* | type | : | データタイプを受け取る領域 |
void* | data | : | データを受け取る領域 |
unsigned long | size | : | データを受け取る領域のサイズ |
戻り値
説明
クリップボードのデータを取り出します。
size が不足した場合は size 分だけとりだします。
引数
int* | type | : | データタイプを受け取る領域 |
unsigned long* | size | : | データサイズを受け取る領域 |
戻り値
説明
クリップボードのデータ情報を取り出します。
以下にドラッグアンドドロップの関数を記述します。
引数
int | type | : | データタイプ |
void* | data | : | データ |
unsigned long | size | : | データサイズ |
戻り値
説明
指定データをドラッグ状態にします。
ドラッグしたデータは任意のウインドウでドロップできますが、適切な応答が得られるかはドロップしたウインドウしだいです。
データのタイプ等はクリップボードに準拠します。
以下にその他の関数を記述します。
引数
戻り値
説明
イベント処理タスクと別タスクで描画処理をする場合に on_paint() イベントとの競合を避けます。
描画処理が終わったらgc_draw_release()を呼び出してロックを解除してください。
引数
戻り値
説明
on_paint() イベントに対する排他制御を解除します。
引数
int | argc | : | main()の引数 |
char** | argv | : | main()の引数 |
long* | x | : | 左上のX座標 |
long* | y | : | 左上のY座標 |
long* | w | : | 幅 |
long* | h | : | 高さ |
戻り値
説明
guiアプリ共通のコマンドラインオプションを解析し、値を取得した後に argc/argv から削除します。
x, y, w, h のうち不要なものには NULL を指定できます。
またオプションが指定されていなかった場合は -1 の値が代入されます。
オプションは以下の通りです
-wx数字 | : | 左上のX座標 |
-wy数字 | : | 左上のY座標 |
-ww数字 | : | ウインドウの幅 |
-wh数字 | : | ウインドウの高さ |
指定されたコマンドラインオプションに不備が有った場合は失敗します。
引数
long | x | : | 左上のX座標 |
long | y | : | 左上のY座標 |
long | w | : | 幅 |
long | h | : | 高さ |
RECT* | rect | : | gc_window_openに渡すパラメータを受け取る領域 |
戻り値
説明
x, y, w, h のパラメータからgc_window_openのパラメータを作成します。
x, y, w, h のうち指定しないものには -1 を指定する事でシステムにまかせられますが、組み合わせに制限があります。
制限に付いてはgc_window_openを参照してください。
引数
const RECT* | rect | : | 矩形 |
long* | w | : | 幅を受け取る領域 |
long* | h | : | 高さを受け取る領域 |
戻り値
説明
矩形の幅と高さを計算します。
引数
long | x | : | 左上のX座標 |
long | y | : | 左上のY座標 |
long | w | : | 幅 |
long | h | : | 高さ |
RECT* | rect | : | 矩形を受け取る領域 |
戻り値
説明
座標値等から矩形を計算します。
引数
const RECT* | target_rect | : | 最終的な配置 |
RECT* | rect | : | 出力矩形に合わせたい矩形(in/out) |
戻り値
説明
rectの内容を縦横比を損なわずにtarget_rectいっぱいに合わせて書き換えます。
矩形の縦横比が異なる場合は全体がtarget_rect内に収まり、かつ中心に配置されます。
引数
RGB_IMG* | image_dest | : | 出力先の画像データ |
const RECT* | rect_dest | : | 出力先の矩形 |
const RGB_IMG* | image_src | : | 入力元の画像データ |
const RECT* | rect_src | : | 入力元の矩形 |
戻り値
説明
RGB_IMG形式の画像データをリサイズします。
リサイズ比は縦横別々に指定可能です。
以下はサンプルプログラムです。
#include <stdio.h>
#include <string.h>
#include <gui/gc.h>
int _on_window_close(HANDLE hwnd)
{
/* GUI終了 */
gc_exit();
/* クローズ許可 */
return 1;
}
void _on_window_paint(HANDLE hwnd, const RECT *rect)
{
POS pos;
RGB rgb ;
/* 背景塗りつぶし */
rgb.r=rgb.g=rgb.b=255;
gc_set_color(hwnd, &rgb);
gc_fill_rect(hwnd, rect);
/* Hello world. の描画 */
rgb.r=rgb.g=rgb.b=0;
gc_set_color(hwnd, &rgb);
pos.x=pos.y=0;
gc_draw_text(hwnd, &pos, "Hello world.", NULL);
}
int main(int argc, char *argp[])
{
WINDOW_FUNC func;
RECT rect;
int rc=0;
/* GUI初期化 */
if (!gc_init()) {
fprintf(stderr, "can't init gui.\n");
return rc;
}
/* ウインドウ作成 */
memset(&func, 0, sizeof(func));
func.on_window_close=_on_window_close;
func.on_window_paint=_on_window_paint;
rect.pos[0].x=rect.pos[0].y=100;
rect.pos[1].x=rect.pos[1].y=200;
if (gc_window_open(0, &func, &rect, WINDOW_TYPE_ALL)) {
rc=1;
/* GUI開始 */
gc_main();
}
else {
fprintf(stderr, "can't open window.\n");
/* GUI後始末 */
gc_exit();
}
/* 終了 */
return rc;
}