GUIツール リファレンス マニュアル
目次
概要
型
ユーティリティ関数
コントロール関数
イベント通知関数
全コントロール共通関数
ラベルコントロール関数
ボタンコントロール関数
セレクタコントロール関数
スライダーコントロール関数
リストコントロール関数
エディットコントロール関数
カスタムコントロール関数
索引
GUIで動作するアプリケーションを作成する際の基本的なGUIコントロールを提供します。
必要なファイルは gi.h (gc.h mpltype.h, cputype.h) と gi.a (gc.a kc.a) です。
以降でGUIコールに必要な型及び、個々の関数を説明します。
MPL で定義される型を以下に記述します。
GUIコールで定義される型を以下に記述します。
typedef struct _POS {
long x ;
long y ;
} POS ;
typedef struct _RECT {
POS pos[2] ; /* 左上原点で [0]左上 [1]右下 */
} RECT ;
GUIコントロールを組み合わせて作ったツールを使うための関数です。
引数
const char* | msg | : | 表示メッセージ |
const char* | caption | : | ウインドウタイトル文字列 |
int | type | : | メッセージボックスの形式 |
HANDLE | hwnd | : | 親ウインドウ |
戻り値
MB_OK | : | 「確認」「決定」ボタンが押された |
MB_CANCEL | : | 「取り消し」ボタンが押された |
説明
メッセージボックスを表示します。
親ウインドウに0以外を指定した場合、メッセージボックスは指定した親ウインドウの子ウインドウになります。
またメッセージボックスのタイプは以下の通りです。
MB_OK | : | 「確認」ボタンのみ |
MB_OKCANCEL | : | 「決定」「取り消し」ボタンの選択 |
引数
const char* | path | : | 結果を格納する領域 |
int | len | : | pathのサイズ |
HANDLE | hwnd | : | 親ウインドウ |
戻り値
説明
ファイル選択ダイアログを表示します。
親ウインドウに0以外を指定した場合、ファイル選択ダイアログは指定した親ウインドウの子ウインドウになります。
戻り値が0以外の場合はpathで示されたバッファに入力されたパス文字列が格納されます。
引数
const char* | menu_struct | : | メニュー構造 |
POS | pos | : | 表示位置 |
戻り値
-1 | : | 異常終了 |
0 | : | キャンセルした |
1〜 | : | 選択されたメニューのID |
説明
多階層ポップアップメニューを表示します。
メニュー構造の書式と例は以下の通りです。
メニューの1項目が《文字列》\t《結果》\nで表現され、これが行数分並ぶ。
《結果》には2通りの内容が入り
A.選択されたさいに戻されるID番号(1〜の整数値。0は未選択。-1はエラーに使われる)
B.'{'と'}'で括ったサブメニューの menu_struct 文字列
例1)1階層のメニュー
"ONE\t1\nTWO\t2\nTHREE\t3\n"
例2)多階層のメニュー
"COLOR\t{RED\t1\nGREEN\t2\BLUE\t3\n}\nNUMBER\t{10\t10\20\t20\n}\n"
引数
const char* | app_name | : | 設定.アプリケーション名 / 解除.NULL |
戻り値
説明
シグナルハンドラーをGUIのモノに置き換えます。
ここで指定するアプリケーション名はエラー表示時のキャプションに表紙されます。
またポインタ値を記録して利用するのでスタック上のアドレスは渡さないでください。
GUIコントロール全体を制御するための関数です。
引数
HANDLE | hwnd | : | GUIコントロールを配置するウインドウ |
戻り値
説明
GUIコントローラーを作成します。
コントローラーはGUIコントロールを配置するウインドウ毎に個別に必要です。
GUIコントロールを使う場合は配置したいウインドウを引数にしてコントローラーを作成してください。
引数
HANDLE | hctrl | : | 削除するGUIコントロール |
戻り値
説明
不要になったGUIコントローラーを削除します。
コントローラーが管理していたウインドウを削除する時にこちらも削除してください。
引数
HANDLE | hctrl | : | 登録先のコントローラー |
HANDLE | hobj | : | 登録するGUIコントロール |
RECT* | rect | : | 配置 |
int | visible | : | 0.初期状態で非表示 / !0.初期状態で表示 |
戻り値
説明
コントローラーにGUIコントロールを登録します。
この呼び出しによりGUIコントロールがウインドウに「張り付けれた」状態になります。
引数
HANDLE | hctrl | : | 登録先のコントローラー |
HANDLE | hobj | : | 登録済みのGUIコントロール |
int | visible | : | 0.非表示 / !0.表示 |
戻り値
説明
GUIコントロールの表示/非表示を制御します。
非表示状態のコントロールにはイベントが通知されません。
引数
HANDLE | hctrl | : | 登録先のコントローラー |
HANDLE | hobj | : | 登録済みのGUIコントロール |
RECT* | rect | : | 配置 |
戻り値
説明
GUIコントロールの配置を変更します。
引数
HANDLE | hctrl | : | 登録先のコントローラー |
HANDLE | hobj | : | 登録済みのGUIコントロール |
戻り値
説明
キーボードフォーカスを指定したGUIコントロールに変更します。
GUIコントロールにイベントを通知するための関数です。
GUIコントロールを使うウインドウはここに有る関数に対応するウインドウイベントを処理して通知関数を呼び出してください。
コントローラーが登録されているGUIコントロールにイベントを適切に振り分けます。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
RECT* | rect | : | 元のウインドウメッセージの引数 |
戻り値
説明
on_window_paint()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
const POS* | pos | : | 元のウインドウメッセージの引数 |
戻り値
説明
on_mouse_enter()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
戻り値
説明
on_mouse_leave()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
const POS* | pos | : | 元のウインドウメッセージの引数 |
戻り値
0 以外 | : | マウスイベントがGUIコントロール上で発生した |
0 | : | マウスイベントがGUIコントロール外で発生した |
説明
on_mouse_move()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
const POS* | pos | : | 元のウインドウメッセージの引数 |
戻り値
0 以外 | : | マウスイベントがGUIコントロール上で発生した |
0 | : | マウスイベントがGUIコントロール外で発生した |
説明
on_mouse_ldown()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
const POS* | pos | : | 元のウインドウメッセージの引数 |
戻り値
0 以外 | : | マウスイベントがGUIコントロール上で発生した |
0 | : | マウスイベントがGUIコントロール外で発生した |
説明
on_mouse_lup()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
const POS* | pos | : | 元のウインドウメッセージの引数 |
戻り値
0 以外 | : | マウスイベントがGUIコントロール上で発生した |
0 | : | マウスイベントがGUIコントロール外で発生した |
説明
on_mouse_rdown()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
const POS* | pos | : | 元のウインドウメッセージの引数 |
戻り値
0 以外 | : | マウスイベントがGUIコントロール上で発生した |
0 | : | マウスイベントがGUIコントロール外で発生した |
説明
on_mouse_rup()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
unsigned char | ch | : | 元のウインドウメッセージの引数 |
戻り値
0 以外 | : | キーイベントがGUIコントロール上で発生した |
0 | : | キーイベントがGUIコントロール外で発生した |
説明
on_keyboard_push()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
unsigned char | ch | : | 元のウインドウメッセージの引数 |
戻り値
0 以外 | : | キーイベントがGUIコントロール上で発生した |
0 | : | キーイベントがGUIコントロール外で発生した |
説明
on_keyboard_release()イベントを通知します。
引数
HANDLE | hctrl | : | ウインドウに対応するコントローラー |
unsigned char | ch | : | 元のウインドウメッセージの引数 |
戻り値
0 以外 | : | キーイベントがGUIコントロール上で発生した |
0 | : | キーイベントがGUIコントロール外で発生した |
説明
on_keyboard_char()イベントを通知します。
全てのコントロールに対して共通で使う関数です。
引数
戻り値
説明
作成後、登録に失敗したGUIコントロールを削除します。
登録に成功したGUIコントロールの削除はコントローラーが処理するので不要です。
「ラベル」コントロールの関数です。
引数
const char* | label | : | ラベル文字列 |
void* | self | : | オブジェクト固有情報 |
unsigned long | sizeof_self | : | オブジェクト固有情報サイズ |
戻り値
説明
ラベルコントロールを作成します。
引数
戻り値
説明
ラベルの文字列を取得します。
引数
HANDLE | hobj | : | ラベルコントロール |
const char* | text | : | 設定する文字列 |
戻り値
説明
ラベルに文字列を設定します。
「ボタン」コントロールの関数です。
引数
const char* | label | : | ラベル文字列 |
void* | on_click | : | コールバック関数 |
void* | self | : | オブジェクト固有情報 |
unsigned long | sizeof_self | : | オブジェクト固有情報サイズ |
戻り値
説明
ボタンコントロールを作成します。
ボタンが押された時に指定したコールバック関数が呼ばれます。
「セレクタ」コントロールの関数です。
引数
const char* | label | : | ラベル文字列 |
void* | on_click | : | コールバック関数 |
void* | self | : | オブジェクト固有情報 |
unsigned long | sizeof_self | : | オブジェクト固有情報サイズ |
戻り値
0 以外 | : | セレクタコントロールのハンドル |
0 | : | 失敗 |
説明
セレクタコントロールを作成します。
on_clickを指定した場合セレクタが押された時に指定したコールバック関数が呼ばれます。
セレクタは「チェックボックス」と「ラジオボタン」の2通りの使い方があります。
作成したセレクタを単品で使う場合は「チェックボックス」として、gi_selecter_addを使って組み合わせた場合は「ラジオボタン」として機能します。
各々の使い方は後述するアクセス関数を参照してください。
引数
HANDLE | hobj | : | セレクタコントロール(チェックボックス) |
戻り値
0 以外 | : | チェックされている |
0 | : | チェックされていない |
説明
セレクタ(チェックボックス)の状態を取得します。
引数
HANDLE | hobj | : | セレクタコントロール(チェックボックス) |
int | on | : | 0.チェックを外す !0.チェックする |
戻り値
説明
セレクタ(チェックボックス)の状態を設定します。
引数
HANDLE | hobj | : | セレクタコントロール(ラジオボタンの親) |
戻り値
-1 | : | 未選択 |
0〜 | : | 選択されているラジオボタンのID |
説明
セレクタ(ラジオボタン)の選択状態を取得します。
IDは親が0、最初に登録された子が1、次が2…と付けられます。
引数
HANDLE | hobj | : | セレクタコントロール(ラジオボタンの親) |
int | sel | : | -1.未選択にする 0〜.選択する |
戻り値
説明
セレクタ(ラジオボタン)の選択状態を設定します。
引数
HANDLE | hparent | : | セレクタコントロール(チェックボックスもしくはラジオボタンの親) |
HANDLE | hobj | : | セレクタコントロール(チェックボックス) |
戻り値
説明
複数のセレクタをまとめてラジオボタンとして使うように設定します。
作成したままのセレクタ(チェックボックス)に対して別のセレクタ(チェックボックス)を登録すると、第一引数の側がラジオボタンの親に、第二引数の側がラジオボタンの子になります。
以後、ラジオボタンの親に幾つでもセレクタ(チェックボックス)を追加登録できます。
各セレクタに割り当てられるIDは親が0、子供は追加順に1〜となります。
「スライダー」コントロールの関数です。
引数
int | type | : | 0.垂直 1.水平 |
void* | on_change | : | コールバック関数 |
void* | on_fix | : | コールバック関数 |
void* | self | : | オブジェクト固有情報 |
unsigned long | sizeof_self | : | オブジェクト固有情報サイズ |
戻り値
0 以外 | : | スライダーコントロールのハンドル |
0 | : | 失敗 |
説明
スライダーコントロールを作成します。
on_changeを指定した場合スライダー位置が変わるたびに指定したコールバック関数が呼ばれます。
on_fixを指定した場合スライダー位置が決定した時に指定したコールバック関数が呼ばれます。
これらの違いはマウスでのドラッグ移動時に移動するたびに呼ばれるか移動を終了した時に1度だけ呼ばれるかの違いです。
引数
HANDLE | hobj | : | スライダーコントロール |
SLIDERINFO* | info | : | 状態を受け取る領域 |
戻り値
説明
スライダーの状態を取得します。
SLIDERINFO型はスライダーの各種状態を保持した構造体です。
内容は以下の通りです。
typedef struct _SLIDERINFO {
long min ;
long max ;
long pos ;
long page_size ;
} SLIDERINFO ;
引数
HANDLE | hobj | : | スライダーコントロール |
const SLIDERINFO* | info | : | 設定する状態 |
戻り値
説明
スライダーの状態を設定します。
SLIDERINFO型についてはgi_slider_get_info()を参照してください。
「リスト」コントロールの関数です。
引数
int | type | : | 0.1行選択 1.複数選択 |
void* | on_click | : | コールバック関数 |
void* | self | : | オブジェクト固有情報 |
unsigned long | sizeof_self | : | オブジェクト固有情報サイズ |
戻り値
説明
リストコントロールを作成します。
on_clickを指定した場合リスト行が押されるたびに指定したコールバック関数が呼ばれます。
引数のidは0〜の押された項目のIDです(1行目の項目が、2行目の項目が1…)。
引数
戻り値
説明
リストコントロールの中身を空にします。
引数
HANDLE | hobj | : | リストコントロール |
int | id | : | -1.末尾に追加 0〜.挿入位置 |
const char* | label | : | 項目名 |
int | value | : | 値 |
戻り値
説明
リストコントロールに項目を追加・挿入します。
引数
HANDLE | hobj | : | リストコントロール |
int | id | : | 削除対象 |
戻り値
説明
リストコントロールから項目を削除します。
引数
HANDLE | hobj | : | リストコントロール |
int | id | : | 取得対象 |
const char** | label | : | 項目名を受け取る領域 |
int* | value | : | 値を受け取る領域 |
戻り値
説明
リストコントロールから項目名および値を取得します。
引数
HANDLE | hobj | : | リストコントロール |
int | id | : | 設定対象 |
戻り値
説明
指定した項目がリストボックスの一番上になるようにスクロールします。
引数
戻り値
説明
リストボックスの一番上に表示されている項目IDを取得します。
引数
HANDLE | hobj | : | リストコントロール |
int | id | : | -1.未選択 0〜.対象項目 |
戻り値
説明
1行選択リストボックスにおいて指定した項目を選択状態にします。
引数
戻り値
-1 以外 | : | 選択されている項目のID |
-1 | : | 未選択状態 |
説明
1行選択リストボックスにおいて選択されている項目を取得します。
引数
HANDLE | hobj | : | リストコントロール |
int | id | : | 対象項目 |
int | sel | : | 0.未選択 1.選択 |
戻り値
説明
複数行選択リストボックスにおいて指定した項目の選択/非選択を設定します。
引数
HANDLE | hobj | : | リストコントロール |
int | id | : | 対象項目 |
戻り値
説明
複数行選択リストボックスにおいて指定した項目の選択/非選択を取得します。
「エディット」コントロールの関数です。
引数
int | multi_line | : | 0.1行 1.複数行 |
void* | on_lostfocus | : | コールバック関数 |
int* | on_extra_key | : | コールバック関数 |
void* | on_ctrl_key | : | コールバック関数 |
void* | on_scroll_change | : | コールバック関数 |
void* | self | : | オブジェクト固有情報 |
unsigned long | sizeof_self | : | オブジェクト固有情報サイズ |
戻り値
0 以外 | : | エディットコントロールのハンドル |
0 | : | 失敗 |
説明
エディットコントロールを作成します。
on_lostfocusを指定した場合エディットボックスがフォーカスをロストした時に指定したコールバック関数が呼ばれます。
on_extra_keyを指定した場合「ENTER」もしくは「ESC」キーが押された時に指定したコールバック関数が呼ばれます。
コールバックの戻り値を0以外にすると通常のキー処理はスキップされます。
on_ctrl_keyを指定した場合「CTRL+α」キーが押された時に指定したコールバック関数が呼ばれます。
ただしエディットコントロールが使用していたり他のコードと重複するCTRL + C, H, I, J, T, V, X, Zでは呼ばれません。
on_scroll_changeを指定した場合エディットボックスのビュー位置が移動した時に指定したコールバック関数が呼ばれます。
引数
戻り値
説明
エディットコントロールの中身を空にします。
引数
HANDLE | hobj | : | エディットコントロール |
int | line | : | -1.末尾に追加 0〜.挿入行 |
const char* | text | : | 1行分の文字列 |
戻り値
説明
複数行リストコントロールに行を追加・挿入します。
引数
HANDLE | hobj | : | エディットコントロール |
int | line | : | 削除行 |
戻り値
説明
複数行エディットコントロールから行を削除します。
引数
HANDLE | hobj | : | エディットコントロール |
int | line | : | 対象行 |
const char* | text | : | 1行文字列 |
戻り値
説明
エディットコントロールの指定行の内容を設定します。
1行エディットコントロールの場合はlineに0を指定してください。
引数
HANDLE | hobj | : | エディットコントロール |
int | line | : | 対象行 |
戻り値
説明
エディットコントロールの指定行の内容を取得します。
1行エディットコントロールの場合はlineに0を指定してください。
引数
HANDLE | hobj | : | エディットコントロール |
int* | cols | : | 列数を受け取る領域 |
int* | rows | : | 行数を受け取る領域 |
戻り値
説明
エディットコントロールのデータのサイズ(列数=最大1行文字数・行数)を取得します。
引数
HANDLE | hobj | : | エディットコントロール |
int* | cols | : | 列数を受け取る領域 |
int* | col_mod | : | 列の端数の有無を受け取る領域 |
int* | rows | : | 行数を受け取る領域 |
int* | row_mod | : | 行の端数の有無を受け取る領域 |
戻り値
説明
エディットコントロールの表示エリアのサイズを取得します。
colsおよびrowsは完全に表示できる文字/行数で、col_modおよびrow_modが1の場合はそれぞれ中途半端に表示される領域が有ることを示します。
引数
HANDLE | hobj | : | エディットコントロール |
int* | x | : | 描画領域左上に描画されるデータのcolを受け取る領域 |
int* | y | : | 描画領域左上に描画されるデータのrowを受け取る領域 |
戻り値
説明
ビューの位置(データ中の何処を描画しているか)を取得します。
引数
HANDLE | hobj | : | エディットコントロール |
int | x | : | 描画領域左上に描画させるデータのcol |
int | y | : | 描画領域左上に描画させるデータのrow |
戻り値
説明
ビューの位置(データ中の何処を描画しているか)を設定します。
引数
HANDLE | hobj | : | エディットコントロール |
int* | x | : | カーソル位置のcolを受け取る領域 |
int* | y | : | カーソル位置のrowを受け取る領域 |
戻り値
説明
カーソルの位置(データ中の何処に位置しているか)を取得します。
引数
HANDLE | hobj | : | エディットコントロール |
int | x | : | カーソル位置のcol |
int | y | : | カーソル位置のrow |
戻り値
説明
カーソルの位置(データ中の何処に位置しているか)を設定します。
引数
戻り値
説明
データ変更フラグを取得します。
引数
HANDLE | hobj | : | エディットコントロール |
int | flg | : | 0.データは未変更 1.データは変更されている |
戻り値
説明
データ変更フラグを設定します。
引数
HANDLE | hobj | : | エディットコントロール |
int* | sl | : | 選択開始行を受け取る領域(-1なら未選択) |
int* | sx | : | 選択開始文字位置を受け取る領域 |
int* | el | : | 選択終了行を受け取る領域 |
int* | ex | : | 選択終了文字位置を受け取る領域 |
戻り値
説明
選択領域を取得します。
引数
HANDLE | hobj | : | エディットコントロール |
int | sl | : | 選択開始行(-1なら未選択) |
int | sx | : | 選択開始文字位置 |
int | el | : | 選択終了行 |
int | ex | : | 選択終了文字位置 |
戻り値
説明
選択領域を設定します。
引数
HANDLE | hobj | : | エディットコントロール |
const char* | text | : | 検索文字列 |
int | type | : | 検索方法 0.先頭から 1.後方検索 -1.前方検索 |
戻り値
説明
文字列検索を実行します。
見つかった場合、検索文字列は選択状態になります。
引数
戻り値
説明
選択領域の文字列をクリップボードにコピーし削除します。
引数
戻り値
説明
選択領域の文字列をクリップボードにコピーします。
引数
戻り値
説明
クリップボードから文字列を貼り付けます。
カスタムコントロール作成用の関数です。
引数
const char* | type | : | コントロール種別識別子(そのコントロール用に独自定義した4byteの文字列) |
GUI_OBJFUNC* | func | : | メッセージハンドラ |
unsigned long | sizeof_instance | : | 固有情報サイズ |
戻り値
説明
コントロールを作成します。
コントロールを作成するには識別子・メッセージハンドラ・必要なローカルメモリサイズの指定が必要です。
識別子は4byteの文字列で他のコントロールと同じにならないように定義する必要があります。
既存の識別子は "LABL","BTN ","SEL ","SLID","LIST","EDIT" の6種類が使用済みです。
イベントハンドラは GUI_OBJFUNC 構造体で定義されるコールバック関数の集合で、処理する必要のある関数だけ定義してください。
不要な関数はNULLが指定できます。
GUI_OBJFUNC の内容は以下の通りです。
typedef struct _GUI_OBJFUNC {
void (*on_regist)(HANDLE hobj) ;
void (*on_window_paint)(HANDLE hobj, const RECT *rect) ;
void (*on_window_remap)(HANDLE hobj, const RECT *rect) ;
void (*on_mouse_enter)(HANDLE hctrl, const POS *pos) ;
void (*on_mouse_leave)(HANDLE hctrl) ;
void (*on_mouse_move)(HANDLE hobj, const POS *pos) ;
void (*on_mouse_ldown)(HANDLE hobj, const POS *pos) ;
void (*on_mouse_lup)(HANDLE hobj, const POS *pos) ;
void (*on_mouse_rdown)(HANDLE hobj, const POS *pos) ;
void (*on_mouse_rup)(HANDLE hobj, const POS *pos) ;
void (*on_keyboard_push)(HANDLE hobj, unsigned char ch) ;
void (*on_keyboard_release)(HANDLE hobj, unsigned char ch) ;
void (*on_keyboard_char)(HANDLE hobj, unsigned char ch) ;
void (*on_keyboard_getfocus)(HANDLE hobj) ;
void (*on_keyboard_lostfocus)(HANDLE hobj) ;
void (*on_delete)(HANDLE hobj) ;
} GUI_OBJFUNC ;
ローカルメモリはそのコントロールの動作を実現するために必要なメモリーで、コントロールの個々のインスタンス毎に確保されます。
確保したメモリーはgi_obj_get_instance()で参照・利用します。
引数
戻り値
コントロールが登録されているコントローラーのハンドル |
説明
コントロールが登録されているコントローラーを取得します。
引数
戻り値
説明
コントロールが登録されているウインドウを取得します。
コントロールが非表示状態の時は取得できません。
引数
HANDLE | hobj | : | コントロール |
RECT* | rect | : | 配置矩形を受け取る領域 |
戻り値
説明
コントロールが配置されているウインドウ上の矩形を取得します。
引数
HANDLE | hobj | : | コントロール |
const char* | type | : | コントロールの識別子 |
戻り値
説明
コントロールのローカルメモリを取得します。
識別子の指定は間違ったアクセスを防ぐための措置です。
引数
戻り値
説明
ローカルメモリに対応したコントロールを取得します。
引数
戻り値
説明
マウス入力を独占します。
引数
戻り値
説明
独占していたマウス入力を解放します。
引数
戻り値
説明
指定したコントロールがキーボードフォーカスを保持していた場合、1つ前のコントロールにフォーカスを移動します。
引数
戻り値
説明
指定したコントロールがキーボードフォーカスを保持していた場合、1つ後のコントロールにフォーカスを移動します。