GUIツール リファレンス マニュアル

目次

概要

ユーティリティ関数
コントロール関数
イベント通知関数
全コントロール共通関数
ラベルコントロール関数
ボタンコントロール関数
セレクタコントロール関数
スライダーコントロール関数
リストコントロール関数
エディットコントロール関数
カスタムコントロール関数
索引

概要

GUIで動作するアプリケーションを作成する際の基本的なGUIコントロールを提供します。
必要なファイルは gi.h (gc.h mpltype.h, cputype.h) と gi.a (gc.a kc.a) です。
以降でGUIコールに必要な型及び、個々の関数を説明します。

MPL で定義される型を以下に記述します。

型名:内容
HANDLE:資源のハンドル

GUIコールで定義される型を以下に記述します。

typedef struct _POS {
    long x ;
    long y ;
} POS ;
typedef struct _RECT {
    POS pos[2] ;    /* 左上原点で [0]左上 [1]右下 */
} RECT ;
	

関数

ユーティリティ関数

GUIコントロールを組み合わせて作ったツールを使うための関数です。

int gi_msgbox(const char *msg, const char *caption, int type, HANDLE hwnd)

引数
const char*msg:表示メッセージ
const char*caption:ウインドウタイトル文字列
inttype:メッセージボックスの形式
HANDLEhwnd:親ウインドウ
戻り値
MB_OK:「確認」「決定」ボタンが押された
MB_CANCEL:「取り消し」ボタンが押された
説明

メッセージボックスを表示します。
親ウインドウに0以外を指定した場合、メッセージボックスは指定した親ウインドウの子ウインドウになります。
またメッセージボックスのタイプは以下の通りです。

MB_OK:「確認」ボタンのみ
MB_OKCANCEL:「決定」「取り消し」ボタンの選択

int gi_filesel(char *path, int len, HANDLE hwnd)

引数
const char*path:結果を格納する領域
intlen:pathのサイズ
HANDLEhwnd:親ウインドウ
戻り値
0 以外:ファイルを選択した
0:キャンセルした
説明

ファイル選択ダイアログを表示します。
親ウインドウに0以外を指定した場合、ファイル選択ダイアログは指定した親ウインドウの子ウインドウになります。
戻り値が0以外の場合はpathで示されたバッファに入力されたパス文字列が格納されます。

int gi_menu(const char *menu_struct, POS pos)

引数
const char*menu_struct:メニュー構造
POSpos:表示位置
戻り値
-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"
	

void gi_errtrap(const char *app_name)

引数
const char*app_name:設定.アプリケーション名 / 解除.NULL
戻り値
有りません
説明

シグナルハンドラーをGUIのモノに置き換えます。
ここで指定するアプリケーション名はエラー表示時のキャプションに表紙されます。
またポインタ値を記録して利用するのでスタック上のアドレスは渡さないでください。

コントロール関数

GUIコントロール全体を制御するための関数です。

HANDLE gi_ctrl_create(HANDLE hwnd)

引数
HANDLEhwnd:GUIコントロールを配置するウインドウ
戻り値
0 以外:コントローラーのハンドル
0:失敗
説明

GUIコントローラーを作成します。
コントローラーはGUIコントロールを配置するウインドウ毎に個別に必要です。
GUIコントロールを使う場合は配置したいウインドウを引数にしてコントローラーを作成してください。

void gi_ctrl_delete(HANDLE hctrl)

引数
HANDLEhctrl:削除するGUIコントロール
戻り値
有りません
説明

不要になったGUIコントローラーを削除します。
コントローラーが管理していたウインドウを削除する時にこちらも削除してください。

int gi_ctrl_regist(HANDLE hctrl, HANDLE hobj, RECT *rect, int visible)

引数
HANDLEhctrl:登録先のコントローラー
HANDLEhobj:登録するGUIコントロール
RECT*rect:配置
intvisible:0.初期状態で非表示 / !0.初期状態で表示
戻り値
0 以外:成功
0:失敗
説明

コントローラーにGUIコントロールを登録します。
この呼び出しによりGUIコントロールがウインドウに「張り付けれた」状態になります。

int gi_ctrl_visible(HANDLE hctrl, HANDLE hobj, int visible)

引数
HANDLEhctrl:登録先のコントローラー
HANDLEhobj:登録済みのGUIコントロール
intvisible:0.非表示 / !0.表示
戻り値
0 以外:成功
0:失敗
説明

GUIコントロールの表示/非表示を制御します。
非表示状態のコントロールにはイベントが通知されません。

int gi_ctrl_remap(HANDLE hctrl, HANDLE hobj, RECT *rect)

引数
HANDLEhctrl:登録先のコントローラー
HANDLEhobj:登録済みのGUIコントロール
RECT*rect:配置
戻り値
0 以外:成功
0:失敗
説明

GUIコントロールの配置を変更します。

int gi_ctrl_setfocus(HANDLE hctrl, HANDLE hobj)

引数
HANDLEhctrl:登録先のコントローラー
HANDLEhobj:登録済みのGUIコントロール
戻り値
0 以外:成功
0:失敗
説明

キーボードフォーカスを指定したGUIコントロールに変更します。

イベント通知関数

GUIコントロールにイベントを通知するための関数です。
GUIコントロールを使うウインドウはここに有る関数に対応するウインドウイベントを処理して通知関数を呼び出してください。
コントローラーが登録されているGUIコントロールにイベントを適切に振り分けます。

void gi_ctrl_window_paint(HANDLE hctrl, const RECT *rect)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
RECT*rect:元のウインドウメッセージの引数
戻り値
有りません
説明

on_window_paint()イベントを通知します。

void gi_ctrl_mouse_enter(HANDLE hctrl, const POS *pos)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
const POS*pos:元のウインドウメッセージの引数
戻り値
有りません
説明

on_mouse_enter()イベントを通知します。

void gi_ctrl_mouse_leave(HANDLE hctrl)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
戻り値
有りません
説明

on_mouse_leave()イベントを通知します。

int gi_ctrl_mouse_move(HANDLE hctrl, const POS *pos)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
const POS*pos:元のウインドウメッセージの引数
戻り値
0 以外:マウスイベントがGUIコントロール上で発生した
0:マウスイベントがGUIコントロール外で発生した
説明

on_mouse_move()イベントを通知します。

int gi_ctrl_mouse_ldown(HANDLE hctrl, const POS *pos)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
const POS*pos:元のウインドウメッセージの引数
戻り値
0 以外:マウスイベントがGUIコントロール上で発生した
0:マウスイベントがGUIコントロール外で発生した
説明

on_mouse_ldown()イベントを通知します。

int gi_ctrl_mouse_lup(HANDLE hctrl, const POS *pos)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
const POS*pos:元のウインドウメッセージの引数
戻り値
0 以外:マウスイベントがGUIコントロール上で発生した
0:マウスイベントがGUIコントロール外で発生した
説明

on_mouse_lup()イベントを通知します。

int gi_ctrl_mouse_rdown(HANDLE hctrl, const POS *pos)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
const POS*pos:元のウインドウメッセージの引数
戻り値
0 以外:マウスイベントがGUIコントロール上で発生した
0:マウスイベントがGUIコントロール外で発生した
説明

on_mouse_rdown()イベントを通知します。

int gi_ctrl_mouse_rup(HANDLE hctrl, const POS *pos)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
const POS*pos:元のウインドウメッセージの引数
戻り値
0 以外:マウスイベントがGUIコントロール上で発生した
0:マウスイベントがGUIコントロール外で発生した
説明

on_mouse_rup()イベントを通知します。

int gi_ctrl_keyboard_push(HANDLE hctrl, unsigned char ch)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
unsigned charch:元のウインドウメッセージの引数
戻り値
0 以外:キーイベントがGUIコントロール上で発生した
0:キーイベントがGUIコントロール外で発生した
説明

on_keyboard_push()イベントを通知します。

int gi_ctrl_keyboard_release(HANDLE hctrl, unsigned char ch)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
unsigned charch:元のウインドウメッセージの引数
戻り値
0 以外:キーイベントがGUIコントロール上で発生した
0:キーイベントがGUIコントロール外で発生した
説明

on_keyboard_release()イベントを通知します。

int gi_ctrl_keyboard_char(HANDLE hctrl, unsigned char ch)

引数
HANDLEhctrl:ウインドウに対応するコントローラー
unsigned charch:元のウインドウメッセージの引数
戻り値
0 以外:キーイベントがGUIコントロール上で発生した
0:キーイベントがGUIコントロール外で発生した
説明

on_keyboard_char()イベントを通知します。

全コントロール共通関数

全てのコントロールに対して共通で使う関数です。

void gi_obj_delete(HANDLE hobj)

引数
HANDLEhobj:未登録のGUIコントロール
戻り値
有りません
説明

作成後、登録に失敗したGUIコントロールを削除します。
登録に成功したGUIコントロールの削除はコントローラーが処理するので不要です。

ラベルコントロール関数

「ラベル」コントロールの関数です。

HANDLE gi_label_create(const char *label, void *self, unsigned long sizeof_self)

引数
const char*label:ラベル文字列
void*self:オブジェクト固有情報
unsigned longsizeof_self:オブジェクト固有情報サイズ
戻り値
0 以外:ラベルコントロールのハンドル
0:失敗
説明

ラベルコントロールを作成します。

const char *gi_label_get_text(HANDLE hobj)

引数
HANDLEhobj:ラベルコントロール
戻り値
ラベルの文字列
説明

ラベルの文字列を取得します。

int gi_label_set_text(HANDLE hobj, const char *text)

引数
HANDLEhobj:ラベルコントロール
const char*text:設定する文字列
戻り値
0 以外:成功
0:失敗
説明

ラベルに文字列を設定します。

ボタンコントロール関数

「ボタン」コントロールの関数です。

HANDLE gi_button_create(const char *label, void (*on_click)(HANDLE hobj, void *self), void *self, unsigned long sizeof_self)

引数
const char*label:ラベル文字列
void*on_click:コールバック関数
void*self:オブジェクト固有情報
unsigned longsizeof_self:オブジェクト固有情報サイズ
戻り値
0 以外:ボタンコントロールのハンドル
0:失敗
説明

ボタンコントロールを作成します。

ボタンが押された時に指定したコールバック関数が呼ばれます。

セレクタコントロール関数関数

「セレクタ」コントロールの関数です。

HANDLE gi_selecter_create(const char *label, void (*on_click)(HANDLE hobj, void *self), void *self, unsigned long sizeof_self)

引数
const char*label:ラベル文字列
void*on_click:コールバック関数
void*self:オブジェクト固有情報
unsigned longsizeof_self:オブジェクト固有情報サイズ
戻り値
0 以外:セレクタコントロールのハンドル
0:失敗
説明

セレクタコントロールを作成します。

on_clickを指定した場合セレクタが押された時に指定したコールバック関数が呼ばれます。

セレクタは「チェックボックス」と「ラジオボタン」の2通りの使い方があります。
作成したセレクタを単品で使う場合は「チェックボックス」として、gi_selecter_addを使って組み合わせた場合は「ラジオボタン」として機能します。
各々の使い方は後述するアクセス関数を参照してください。

int gi_selecter_get_stat(HANDLE hobj)

引数
HANDLEhobj:セレクタコントロール(チェックボックス)
戻り値
0 以外:チェックされている
0:チェックされていない
説明

セレクタ(チェックボックス)の状態を取得します。

int gi_selecter_set_stat(HANDLE hobj, int on)

引数
HANDLEhobj:セレクタコントロール(チェックボックス)
inton:0.チェックを外す !0.チェックする
戻り値
0 以外:成功
0:失敗
説明

セレクタ(チェックボックス)の状態を設定します。

int gi_selecter_get_sel(HANDLE hobj)

引数
HANDLEhobj:セレクタコントロール(ラジオボタンの親)
戻り値
-1:未選択
0〜:選択されているラジオボタンのID
説明

セレクタ(ラジオボタン)の選択状態を取得します。

IDは親が0、最初に登録された子が1、次が2…と付けられます。

int gi_selecter_set_sel(HANDLE hobj, int sel)

引数
HANDLEhobj:セレクタコントロール(ラジオボタンの親)
intsel:-1.未選択にする 0〜.選択する
戻り値
0 以外:成功
0:失敗
説明

セレクタ(ラジオボタン)の選択状態を設定します。

int gi_selecter_add(HANDLE hparent, HANDLE hobj)

引数
HANDLEhparent:セレクタコントロール(チェックボックスもしくはラジオボタンの親)
HANDLEhobj:セレクタコントロール(チェックボックス)
戻り値
0 以外:成功
0:失敗
説明

複数のセレクタをまとめてラジオボタンとして使うように設定します。

作成したままのセレクタ(チェックボックス)に対して別のセレクタ(チェックボックス)を登録すると、第一引数の側がラジオボタンの親に、第二引数の側がラジオボタンの子になります。
以後、ラジオボタンの親に幾つでもセレクタ(チェックボックス)を追加登録できます。
各セレクタに割り当てられるIDは親が0、子供は追加順に1〜となります。

スライダーコントロール関数関数

「スライダー」コントロールの関数です。

HANDLE gi_slider_create(int type, void (*on_change)(HANDLE hobj, long pos, void *self), void (*on_fix)(HANDLE hobj, long pos, void *self), void *self, unsigned long sizeof_self)

引数
inttype:0.垂直 1.水平
void*on_change:コールバック関数
void*on_fix:コールバック関数
void*self:オブジェクト固有情報
unsigned longsizeof_self:オブジェクト固有情報サイズ
戻り値
0 以外:スライダーコントロールのハンドル
0:失敗
説明

スライダーコントロールを作成します。

on_changeを指定した場合スライダー位置が変わるたびに指定したコールバック関数が呼ばれます。
on_fixを指定した場合スライダー位置が決定した時に指定したコールバック関数が呼ばれます。
これらの違いはマウスでのドラッグ移動時に移動するたびに呼ばれるか移動を終了した時に1度だけ呼ばれるかの違いです。

int gi_slider_get_info(HANDLE hobj, SLIDERINFO *info)

引数
HANDLEhobj:スライダーコントロール
SLIDERINFO*info:状態を受け取る領域
戻り値
0 以外:成功
0:失敗
説明

スライダーの状態を取得します。

SLIDERINFO型はスライダーの各種状態を保持した構造体です。
内容は以下の通りです。

typedef struct _SLIDERINFO {
    long min ;
    long max ;
    long pos ;
    long page_size ;
} SLIDERINFO ;
	

int gi_slider_set_info(HANDLE hobj, const SLIDERINFO *info)

引数
HANDLEhobj:スライダーコントロール
const SLIDERINFO*info:設定する状態
戻り値
0 以外:成功
0:失敗
説明

スライダーの状態を設定します。

SLIDERINFO型についてはgi_slider_get_info()を参照してください。

リストコントロール関数関数

「リスト」コントロールの関数です。

HANDLE gi_list_create(int type, void (*on_click)(HANDLE hobj, void *self, int id), void *self, unsigned long sizeof_self)

引数
inttype:0.1行選択 1.複数選択
void*on_click:コールバック関数
void*self:オブジェクト固有情報
unsigned longsizeof_self:オブジェクト固有情報サイズ
戻り値
0 以外:リストコントロールのハンドル
0:失敗
説明

リストコントロールを作成します。

on_clickを指定した場合リスト行が押されるたびに指定したコールバック関数が呼ばれます。
引数のidは0〜の押された項目のIDです(1行目の項目が、2行目の項目が1…)。

int gi_list_item_clear(HANDLE hobj)

引数
HANDLEhobj:リストコントロール
戻り値
0 以外:成功
0:失敗
説明

リストコントロールの中身を空にします。

int gi_list_item_insert(HANDLE hobj, int id, const char *label, int value)

引数
HANDLEhobj:リストコントロール
intid:-1.末尾に追加 0〜.挿入位置
const char*label:項目名
intvalue:
戻り値
-1 以外:挿入したID
-1:失敗
説明

リストコントロールに項目を追加・挿入します。

int gi_list_item_delete(HANDLE hobj, int id)

引数
HANDLEhobj:リストコントロール
intid:削除対象
戻り値
0 以外:成功
0:失敗
説明

リストコントロールから項目を削除します。

int gi_list_item_get(HANDLE hobj, int id, const char **label, int *value)

引数
HANDLEhobj:リストコントロール
intid:取得対象
const char**label:項目名を受け取る領域
int*value:値を受け取る領域
戻り値
0 以外:成功
0:失敗
説明

リストコントロールから項目名および値を取得します。

int gi_list_settop(HANDLE hobj, int id)

引数
HANDLEhobj:リストコントロール
intid:設定対象
戻り値
0 以外:成功
0:失敗
説明

指定した項目がリストボックスの一番上になるようにスクロールします。

int gi_list_gettop(HANDLE hobj)

引数
HANDLEhobj:リストコントロール
戻り値
一番上の行の項目のID
説明

リストボックスの一番上に表示されている項目IDを取得します。

int gi_list_setsel(HANDLE hobj, int id)

引数
HANDLEhobj:リストコントロール
intid:-1.未選択 0〜.対象項目
戻り値
0 以外:成功
0:失敗
説明

1行選択リストボックスにおいて指定した項目を選択状態にします。

int gi_list_getsel(HANDLE hobj)

引数
HANDLEhobj:リストコントロール
戻り値
-1 以外:選択されている項目のID
-1:未選択状態
説明

1行選択リストボックスにおいて選択されている項目を取得します。

int gi_list_item_setsel(HANDLE hobj, int id, int sel)

引数
HANDLEhobj:リストコントロール
intid:対象項目
intsel:0.未選択 1.選択
戻り値
0 以外:成功
0:失敗
説明

複数行選択リストボックスにおいて指定した項目の選択/非選択を設定します。

int gi_list_item_getsel(HANDLE hobj, int id)

引数
HANDLEhobj:リストコントロール
intid:対象項目
戻り値
-1:異常終了
0:非選択
1:選択
説明

複数行選択リストボックスにおいて指定した項目の選択/非選択を取得します。

エディットコントロール関数関数

「エディット」コントロールの関数です。

HANDLE gi_edit_create(int multi_line, void (*on_lostfocus)(HANDLE hobj, void *self), int (*on_extra_key)(HANDLE hobj, char ch), void (*on_ctrl_key)(HANDLE hobj, char ch), void (*on_scroll_change)(HANDLE hobj, void *self), void *self, unsigned long sizeof_self)

引数
intmulti_line:0.1行 1.複数行
void*on_lostfocus:コールバック関数
int*on_extra_key:コールバック関数
void*on_ctrl_key:コールバック関数
void*on_scroll_change:コールバック関数
void*self:オブジェクト固有情報
unsigned longsizeof_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を指定した場合エディットボックスのビュー位置が移動した時に指定したコールバック関数が呼ばれます。

int gi_edit_clear(HANDLE hobj)

引数
HANDLEhobj:エディットコントロール
戻り値
0 以外:成功
0:失敗
説明

エディットコントロールの中身を空にします。

int gi_edit_insert_line(HANDLE hobj, int line, const char *text)

引数
HANDLEhobj:エディットコントロール
intline:-1.末尾に追加 0〜.挿入行
const char*text:1行分の文字列
戻り値
-1 以外:挿入した行
-1:失敗
説明

複数行リストコントロールに行を追加・挿入します。

int gi_edit_delete_line(HANDLE hobj, int line)

引数
HANDLEhobj:エディットコントロール
intline:削除行
戻り値
0 以外:成功
0:失敗
説明

複数行エディットコントロールから行を削除します。

int gi_edit_set_text(HANDLE hobj, int line, const char *text)

引数
HANDLEhobj:エディットコントロール
intline:対象行
const char*text:1行文字列
戻り値
0 以外:成功
0:失敗
説明

エディットコントロールの指定行の内容を設定します。
1行エディットコントロールの場合はlineに0を指定してください。

const char *gi_edit_get_text(HANDLE hobj, int line)

引数
HANDLEhobj:エディットコントロール
intline:対象行
戻り値
NULL 以外:行の文字列
NULL:失敗
説明

エディットコントロールの指定行の内容を取得します。
1行エディットコントロールの場合はlineに0を指定してください。

int gi_edit_get_datasize(HANDLE hobj, int *cols, int *rows)

引数
HANDLEhobj:エディットコントロール
int*cols:列数を受け取る領域
int*rows:行数を受け取る領域
戻り値
0 以外:成功
0:失敗
説明

エディットコントロールのデータのサイズ(列数=最大1行文字数・行数)を取得します。

int gi_edit_get_viewsize(HANDLE hobj, int *cols, int *col_mod, int *rows, int *row_mod)

引数
HANDLEhobj:エディットコントロール
int*cols:列数を受け取る領域
int*col_mod:列の端数の有無を受け取る領域
int*rows:行数を受け取る領域
int*row_mod:行の端数の有無を受け取る領域
戻り値
0 以外:成功
0:失敗
説明

エディットコントロールの表示エリアのサイズを取得します。
colsおよびrowsは完全に表示できる文字/行数で、col_modおよびrow_modが1の場合はそれぞれ中途半端に表示される領域が有ることを示します。

int gi_edit_get_viewpos(HANDLE hobj, int *x, int *y)

引数
HANDLEhobj:エディットコントロール
int*x:描画領域左上に描画されるデータのcolを受け取る領域
int*y:描画領域左上に描画されるデータのrowを受け取る領域
戻り値
0 以外:成功
0:失敗
説明

ビューの位置(データ中の何処を描画しているか)を取得します。

int gi_edit_set_viewpos(HANDLE hobj, int x, int y)

引数
HANDLEhobj:エディットコントロール
intx:描画領域左上に描画させるデータのcol
inty:描画領域左上に描画させるデータのrow
戻り値
0 以外:成功
0:失敗
説明

ビューの位置(データ中の何処を描画しているか)を設定します。

int gi_edit_get_cursor(HANDLE hobj, int *x, int *y)

引数
HANDLEhobj:エディットコントロール
int*x:カーソル位置のcolを受け取る領域
int*y:カーソル位置のrowを受け取る領域
戻り値
0 以外:成功
0:失敗
説明

カーソルの位置(データ中の何処に位置しているか)を取得します。

int gi_edit_set_cursor(HANDLE hobj, int x, int y)

引数
HANDLEhobj:エディットコントロール
intx:カーソル位置のcol
inty:カーソル位置のrow
戻り値
0 以外:成功
0:失敗
説明

カーソルの位置(データ中の何処に位置しているか)を設定します。

int gi_edit_get_modify(HANDLE hobj)

引数
HANDLEhobj:エディットコントロール
戻り値
0.データは未変更 1.データは変更されている
説明

データ変更フラグを取得します。

int gi_edit_set_modify(HANDLE hobj, int flg)

引数
HANDLEhobj:エディットコントロール
intflg:0.データは未変更 1.データは変更されている
戻り値
0 以外:成功
0:失敗
説明

データ変更フラグを設定します。

int gi_edit_get_sel(HANDLE hobj, int *sl, int *sx, int *el, int *ex)

引数
HANDLEhobj:エディットコントロール
int*sl:選択開始行を受け取る領域(-1なら未選択)
int*sx:選択開始文字位置を受け取る領域
int*el:選択終了行を受け取る領域
int*ex:選択終了文字位置を受け取る領域
戻り値
0 以外:成功
0:失敗
説明

選択領域を取得します。

int gi_edit_set_sel(HANDLE hobj, int sl, int sx, int el, int ex)

引数
HANDLEhobj:エディットコントロール
intsl:選択開始行(-1なら未選択)
intsx:選択開始文字位置
intel:選択終了行
intex:選択終了文字位置
戻り値
0 以外:成功
0:失敗
説明

選択領域を設定します。

int gi_edit_find(HANDLE hobj, const char *text, int type)

引数
HANDLEhobj:エディットコントロール
const char*text:検索文字列
inttype:検索方法 0.先頭から 1.後方検索 -1.前方検索
戻り値
0 以外:成功
0:失敗
説明

文字列検索を実行します。
見つかった場合、検索文字列は選択状態になります。

void gi_edit_cut(HANDLE hobj)

引数
HANDLEhobj:エディットコントロール
戻り値
ありません
説明

選択領域の文字列をクリップボードにコピーし削除します。

void gi_edit_copy(HANDLE hobj)

引数
HANDLEhobj:エディットコントロール
戻り値
ありません
説明

選択領域の文字列をクリップボードにコピーします。

void gi_edit_paste(HANDLE hobj)

引数
HANDLEhobj:エディットコントロール
戻り値
ありません
説明

クリップボードから文字列を貼り付けます。

カスタムコントロール作成関数関数

カスタムコントロール作成用の関数です。

HANDLE gi_obj_create(const unsigned char *type, GUI_OBJFUNC *func, unsigned long sizeof_instance)

引数
const char*type:コントロール種別識別子(そのコントロール用に独自定義した4byteの文字列)
GUI_OBJFUNC*func:メッセージハンドラ
unsigned longsizeof_instance:固有情報サイズ
戻り値
0 以外:コントロールのハンドル
0:失敗
説明

コントロールを作成します。

コントロールを作成するには識別子・メッセージハンドラ・必要なローカルメモリサイズの指定が必要です。

識別子は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 gi_obj_get_ctrl(HANDLE hobj)

引数
HANDLEhobj:コントロール
戻り値
コントロールが登録されているコントローラーのハンドル
説明

コントロールが登録されているコントローラーを取得します。

HANDLE gi_obj_get_hwnd(HANDLE hobj)

引数
HANDLEhobj:コントロール
戻り値
コントロールが登録されているウインドウ
説明

コントロールが登録されているウインドウを取得します。
コントロールが非表示状態の時は取得できません。

int gi_obj_get_rect(HANDLE hobj, RECT *rect)

引数
HANDLEhobj:コントロール
RECT*rect:配置矩形を受け取る領域
戻り値
0 以外:成功
0:失敗
説明

コントロールが配置されているウインドウ上の矩形を取得します。

void* gi_obj_get_instance(HANDLE hobj, const char *type)

引数
HANDLEhobj:コントロール
const char*type:コントロールの識別子
戻り値
コントロールのローカルメモリ
説明

コントロールのローカルメモリを取得します。
識別子の指定は間違ったアクセスを防ぐための措置です。

HANDLE gi_obj_get_handle(void *obj)

引数
void*obj:コントロールのローカルメモリ
戻り値
ローカルメモリに対応したコントロール
説明

ローカルメモリに対応したコントロールを取得します。

int gi_obj_grab(HANDLE hobj)

引数
HANDLEhobj:コントロール
戻り値
0 以外:成功
0:失敗
説明

マウス入力を独占します。

int gi_obj_free(HANDLE hobj)

引数
HANDLEhobj:コントロール
戻り値
0 以外:成功
0:失敗
説明

独占していたマウス入力を解放します。

int gi_obj_backfocus(HANDLE hobj)

引数
HANDLEhobj:コントロール
戻り値
0 以外:成功
0:失敗
説明

指定したコントロールがキーボードフォーカスを保持していた場合、1つ前のコントロールにフォーカスを移動します。

int gi_obj_nextfocus(HANDLE hobj)

引数
HANDLEhobj:コントロール
戻り値
0 以外:成功
0:失敗
説明

指定したコントロールがキーボードフォーカスを保持していた場合、1つ後のコントロールにフォーカスを移動します。

索引

ユーティリティ関数
gi_msgbox
gi_filesel
gi_menu
gi_errtrap

コントロール関数
gi_ctrl_create
gi_ctrl_delete
gi_ctrl_regist
gi_ctrl_visible
gi_ctrl_remap
gi_ctrl_setfocus

イベント通知関数
gi_ctrl_window_paint
gi_ctrl_mouse_enter
gi_ctrl_mouse_leave
gi_ctrl_mouse_move
gi_ctrl_mouse_ldown
gi_ctrl_mouse_lup
gi_ctrl_mouse_rdown
gi_ctrl_mouse_rup
gi_ctrl_keyboard_char

全コントロール共通関数
gi_obj_delete

ラベルコントロール関数
gi_label_create
gi_label_get_text
gi_label_set_text
ボタンコントロール関数
gi_button_create

セレクタコントロール関数
gi_selecter_create
gi_selecter_get_stat
gi_selecter_set_stat
gi_selecter_get_sel
gi_selecter_set_sel
gi_selecter_add

スライダーコントロール関数
gi_slider_create
gi_slider_get_info
gi_slider_set_info

リストコントロール関数
gi_list_create
gi_list_item_clear
gi_list_item_insert
gi_list_item_delete
gi_list_item_get
gi_list_settop
gi_list_gettop
gi_list_setsel
gi_list_getsel
gi_list_item_setsel
gi_list_item_getsel
エディットコントロール関数
gi_edit_create
gi_edit_clear
gi_edit_insert_line
gi_edit_delete_line
gi_edit_set_text
gi_edit_get_text
gi_edit_get_datasize
gi_edit_get_viewsize
gi_edit_get_viewpos
gi_edit_set_viewpos
gi_edit_get_cursor
gi_edit_set_cursor
gi_edit_get_modify
gi_edit_set_modify
gi_edit_get_sel
gi_edit_set_sel
gi_edit_find
gi_edit_cut
gi_edit_copy
gi_edit_paste

カスタムコントロール関数
gi_obj_create
gi_obj_get_ctrl
gi_obj_get_hwnd
gi_obj_get_rect
gi_obj_get_instance
gi_obj_get_handle
gi_obj_grab
gi_obj_free
gi_obj_backfocus
gi_obj_nextfocus
inserted by FC2 system