PlusGの基本となるクラス. [詳細]
#include <sgcore.h>

Public メソッド | |
| SGCore (SGApplication *app) | |
| コンストラクタ | |
| virtual | ~SGCore () |
| デストラクタ | |
| SGHandle | GetNewHandle () |
| 新しいハンドルを生成する | |
| void | Release () |
| 確保したリソースなどの領域を全て開放する | |
| SGButtonImage * | CreateButtonImage (int id) |
| ボタン リソースを作成する | |
| SGEditboxImage * | CreateEditboxImage (int id) |
| エディット ボックス リソースを作成する | |
| SGFrameImage * | CreateFrameImage (int id) |
| フレーム リソースを作成する | |
| int | CreateImage (int id) |
| リソース イメージ(サーフェース)を作成する。 | |
| int | ReleaseImage (int id) |
| リソース イメージ(サーフェース)を解放する。 | |
| SGImage * | GetImage (int id) |
| リソースIDを指定してリソースクラスを取得する。 | |
| SGRect | DrawText (SGSurface *base, SGString text, int x, int y, int width, int height, SGTextAttribute &attr) |
| 文字列を描画する。 | |
| int | GetStringInfo (SGString text, SGTextAttribute attr, int *width=NULL, int *height=NULL, int *ascender=NULL) |
| 文字列を表示するのに必要な大きさを求める | |
| void | GetTextSize (SGString text, int &width, int &height, SGTextAttribute attr) |
| 文字列を表示するのに必要な大きさを求める | |
| int | DrawButton (SGSurface *base, SGSurface *btn, int x, int y, int width) |
| ボタン用リソースを伸長描画する | |
| int | DrawFrame (SGSurface *base, SGSurface *Surface0, SGSurface *Surface1, SGSurface *Surface2, int stx, int sty, int width, int height) |
| フレーム用リソースを伸長描画する | |
| int | DrawImage (SGSurface *base, const char *filename, int x, int y) |
| イメージファイルの描画 | |
| int | DrawImage (SGSurface *base, const char *filename, int x, int y, int &w, int &h, int shared=TRUE) |
| イメージファイルの描画 | |
| SGDialog * | GetActiveDialog () |
| アクティブなダイアログを取得する。 | |
| SGDialog * | GetDialogFromHandle (SGHandle handle) |
| ダイアログ ハンドルからダイアログ クラスのポインタを取得する | |
| SGObject * | GetObjectFromHandleEx (SGHandle handle) |
| オブジェクト ハンドルからオブジェクト クラスのポインタを取得する | |
| SGHandle | GetHandleFromId (int id) |
| ダイアログIDからダイアログ ハンドルを取得する | |
| int | ToTopDialog (SGHandle handle) |
| 指定したダイアログの重ね順を最前面にする | |
| void | AddDialog (SGDialog *dialog) |
| ダイアログをリストに登録する | |
| void | DeleteDialog (int windowid) |
| ダイアログの登録リストから削除する | |
| void | Closed (SGHandle handledlg, int id, int param) |
| ダイアログのクローズ通知を行う | |
| void | MoveCursor (int x, int y, int act) |
| マウスイベントの通知を行う | |
| void | PostInitial (SGHandle handledlg, int id) |
| ダイアログのオープン通知を行う | |
| void | PostEventUser (int param=0, void *data=NULL, SGHandle handledlg=0, SGHandle handleobj=0) |
| ユーザ イベント通知を発行する | |
| int | DialogUnReference (SGDialog *dlg) |
| void | EnableMouseMoveEvent (int enable) |
| マウスの移動イベントを受け取るかどうかを設定する | |
| int | GetFocusEnable () |
| フォーカス機能のOn/Off状態を取得する | |
| void | SetFocusEnable (int enable) |
| オブジェクトのフォーカス機能のOn/Offを行う | |
| int | GetEvent (_SGEvent *event) |
| イベントを取得する。 | |
| void | ClearEvent () |
| イベントキューをクリアする | |
| void | CancelEvent (int flag=SG_CANCELEVENT_ALL) |
| イベントをキャンセルする | |
| int | WaitWithCheckEvent (int msec) |
| バックグラウンドでのイベント処理の提供とウェイト。 | |
| int | CheckEvent (_SGEvent *event) |
| イベント処理関数 | |
| void | ReleaseAction (SGHandle dhdlg, SGHandle dhobj) |
| 押し下げボタンイメージを元に戻す | |
| void | SetEventButtonLimit (int limit) |
| ボタン イベントの発行可能数を設定する | |
| void | PostEventCursor (int x, int y, int act) |
| マウスのカーソル移動とボタン押下の通知をする | |
| void | PostEventRequest (int type, int act=0) |
| イベントを発生させる | |
| void | PostEventButton (int act, int click=FALSE) |
| ボタンイベントを発行する。 | |
| void | PostEventKeyboard (int act, const char *symbol_name) |
| キーボードイベントを発行する。 | |
| void | PostEventWheel (int val) |
| マウスホイールイベントを発行する。 | |
| int | PostEvent (_SGUserEvent *event) |
| イベントを通知する | |
| void | ReleaseCheck (SGHandle handledlg) |
| ダイアログの終了処理 | |
| void | Sound (int type, int val1, int val2) |
| ビープ音を鳴らすタイミングで呼ばれる。 | |
| void | SetSoundClass (SGSound *sound) |
| 音を鳴らすタイミングを受け取るコールバック関数を登録する | |
| void | SetCaretInterval (int interval) |
| キャレットの点滅周期を設定する。 | |
| void | SetCaretDialog (SGDialog *dlg, int objid) |
| キャレットを保持しているダイアログを登録する。 | |
| int | IsCaretDialog (SGDialog *dlg) |
| 指定したダイアログがキャレットを保持しているか調べる | |
| void | DrawCaret (int w, int h) |
| キャレットを描画する。 | |
| void | MoveCaret (int x, int y) |
| キャレットを移動する。 | |
| void | BlinkCaret (int force=FALSE) |
| キャレットを点滅させる。 | |
| int | HideCaret () |
| キャレットを非表示にする | |
| int | ShowCaret () |
| void | SetCaretVisible () |
| int | IsCaretVisible () |
| キャレットの表示・非表示状態を取得する | |
| void | SetResourceInfo (SGResourceInfo *info, int playrec=SG_INFO_RELEASE, const char *filename=NULL) |
| アプリケーション実行時の動作LOGの記録と再生を行う | |
| void | ResourceInfoLogout () |
| 消費メモリ確認用のログメッセージを出力する。 | |
| void | TimerLock () |
| セマフォロック(タイマー用) | |
| void | TimerUnlock () |
| セマフォアンロック(タイマー用) | |
フレンド | |
| class | SGApplication |
PlusGの基本となるクラス.
プログラム開始時に生成され、プログラム中で唯一存在します。 各クラスから参照されます。
| SGCore | ( | SGApplication * | app | ) |
コンストラクタ
| ~SGCore | ( | ) | [virtual] |
デストラクタ
| SGHandle GetNewHandle | ( | ) |
新しいハンドルを生成する
IDやハンドルとして使用する為のユニークな数値を生成します。
| void Release | ( | ) | [virtual] |
| SGButtonImage * CreateButtonImage | ( | int | id | ) |
ボタン リソースを作成する
ボタン リソースを生成します。
この関数はアプリケーション起動時の初期化関数からコールされる SGApplication::SetImageButton() で使用されています。この関数を直接使用することありません。
ボタン リソースの作成は SGApplication::SetImageButton() を使用してください。
ここではリソースを管理するクラスを生成しますが、画像イメージの読み込み(サーフェースの生成)は行いません。
画像がメモリに用意され実際に使用できるようにするには、ダイアログ生成時に
SGGroupObject::AddButton() を使用し、ボタン リソースの準備が完了します。
| id | 識別用ID |
| SGEditboxImage * CreateEditboxImage | ( | int | id | ) |
エディット ボックス リソースを作成する
エディット ボックス リソースを生成します。
この関数はアプリケーション起動時の初期化関数からコールされる SGApplication::SetImageEditbox() で使用されています。この関数を直接使用することありません。
エディット ボックス リソースの作成は SGApplication::SetImageEditbox() を使用してください。
ここではリソースを管理するクラスを生成しますが、画像イメージの読み込み(サーフェースの生成)は行いません。
画像がメモリに用意され実際に使用できるようにするには、ダイアログ生成時に
SGGroupObject::AddEditbox() を使用し、エディット ボックス リソースの準備が完了します。
| id | 識別用ID |
| SGFrameImage * CreateFrameImage | ( | int | id | ) |
フレーム リソースを作成する
フレーム リソースを生成します。
この関数はアプリケーション起動時の初期化関数からコールされる SGApplication::SetImageFrame() で使用されています。この関数を直接使用することありません。
フレーム リソースの作成は SGApplication::SetImageFrame() を使用してください。
ここではリソースを管理するクラスを生成しますが、画像イメージの読み込み(サーフェースの生成)は行いません。
画像がメモリに用意され実際に使用できるようにするには、ダイアログ生成時に
SGGroupObject::AddFrame() を使用し、フレーム リソースの準備が完了します。
| id | 識別用ID |
| int CreateImage | ( | int | id | ) |
リソース イメージ(サーフェース)を作成する。
登録されているリソース情報を元にリソース イメージ(サーフェース)を作成します。
この関数はダイアログ生成時にコールされる
SGGroupObject::AddButton()
SGGroupObject::AddEditbox()
SGGroupObject::AddFrame()
で使用されています。この関数を直接使用することありません。
| id | 識別用ID |
| TRUE | 成功 | |
| FALSE | 失敗 |
| int ReleaseImage | ( | int | id | ) |
リソース イメージ(サーフェース)を解放する。
確保したリソース イメージ(サーフェース)を解放します。
この関数は各オブジェクトの終了時に、オブジェクトクラスよりコールされます。 この関数を直接使用することありません。
| id | 識別用ID |
| TRUE | 成功 | |
| FALSE | 失敗 |
| SGImage * GetImage | ( | int | id | ) |
リソースIDを指定してリソースクラスを取得する。
登録されているリソースリストの中から、リソースIDを指定して リソースクラス(SGImage)を取得します。
| id | 識別用ID |
| SGRect DrawText | ( | SGSurface * | base, | |
| SGString | text, | |||
| int | x, | |||
| int | y, | |||
| int | width, | |||
| int | height, | |||
| SGTextAttribute & | attr | |||
| ) |
文字列を描画する。
文字列を描画する基本の関数です。 パラメータで指定されたサーフェースに指定位置へ描画します。 範囲も指定しますので、寄せやクリップの機能があります。 改行処理、通貨表示などの付加機能もあります。 描画するサーフェースの指定が SGSurface** となっていて指し示す内容に NULL が指定できます。
内容がNULLのサーフェースのアドレスを指定すると、関数内部でサーフェースを生成し、変数へアドレスを セットします。
| base | 描画を行うサーフェース | |
| text | 文字列 | |
| x | X座標 | |
| y | Y座標 | |
| width | 幅 | |
| height | 高さ | |
| &attr | テキスト アトリビュート クラス |
| int GetStringInfo | ( | SGString | text, | |
| SGTextAttribute | attr, | |||
| int * | width = NULL, |
|||
| int * | height = NULL, |
|||
| int * | ascender = NULL | |||
| ) |
文字列を表示するのに必要な大きさを求める
指定の文字列を指定のアトリビュートで表示した場合の描画に必要な大きさを求めます。
また、アセンダー(ベースラインから上の部分)の大きさも得ることができます。
※複数行に対応していません
| text | 文字列 | |
| attr | アトリビュート | |
| width | 幅(取得用)。NULLでも可。NULLの場合は取得しません。 | |
| height | 高さ(取得用)。NULLでも可。NULLの場合は取得しません。 | |
| ascender | アセンダー(取得用)。NULLでも可。NULLの場合は取得しません。 |
| TRUE | 成功 | |
| FALSE | 失敗 |
| void GetTextSize | ( | SGString | text, | |
| int & | width, | |||
| int & | height, | |||
| SGTextAttribute | attr | |||
| ) |
文字列を表示するのに必要な大きさを求める
指定の文字列を指定のアトリビュートで表示した場合の描画に必要な大きさを求めます。
※複数行に対応しています
| text | 文字列 | |
| width | 幅(取得用) | |
| height | 高さ(取得用) | |
| attr | アトリビュート |
ボタン用リソースを伸長描画する
ボタン用に用意された画像を指定された幅に伸長描画します。
伸長方法は、画像を横方向に、左、中、右と3ブロックに分けて、 中央部分のみをタイル表示(繰り返しコピー)して幅を調整します。
幅は伸長のみ可能で、縮小することはできません。
| base | ボタンを表示するサーフェース | |
| btn | ボタン画像(リソース) | |
| x | 表示座標X | |
| y | 表示座標Y | |
| width | 表示幅 |
| TRUE | 成功 | |
| FALSE | 失敗 |
| int DrawFrame | ( | SGSurface * | base, | |
| SGSurface * | Surface0, | |||
| SGSurface * | Surface1, | |||
| SGSurface * | Surface2, | |||
| int | stx, | |||
| int | sty, | |||
| int | width, | |||
| int | height | |||
| ) |
フレーム用リソースを伸長描画する
フレーム用に用意された画像を指定された幅、高さに伸長描画します。
画像はタイトル部分(TOP)と下の部分(BOTTOM)と残りの真ん中部分(MIDDLE)と3つ用意します。 伸長方法は、3つの画像それぞれの画像を横方向に、左、中、右と3ブロックに分けて、 中央部分のみをタイル表示(繰り返しコピー)して幅を調整します。
高さ方向は、伸長した3つの画像の真ん中用の画像を、縦方向へタイル表示(繰り返しコピー) して高さを調整します。
伸長のみ可能で、縮小することはできません。
| base | フレームを表示するサーフェース | |
| Surface0 | フレーム画像上部 | |
| Surface1 | フレーム画像中央部 | |
| Surface2 | フレーム画像下部 | |
| stx | 表示座標X | |
| sty | 表示座標Y | |
| width | 表示幅 | |
| height | 表示高さ |
| TRUE | 成功 | |
| FALSE | 失敗 |
| int DrawImage | ( | SGSurface * | base, | |
| const char * | filename, | |||
| int | x, | |||
| int | y | |||
| ) |
イメージファイルの描画
指定した画像ファイルを読み込み、指定のサーフェースへ描画します。
filenameには画像ファイルを指定します。ファイルはリソースフォルダにあるものとして処理します。
初期リソースフォルダは "resources/" です。
void SGGraphics::SetImageFolder(const char* folder)
で変更することが出来ます。
リソースフォルダ以外のファイルを指定する場合はfilename文字列の先頭を「/」にしフルパスで指定して下さい。
読み込んだ画像イメージはキャッシュされません。
| base | 描画を行うサーフェース | |
| filename | 画像ファイル名 | |
| x | 表示座標X | |
| y | 表示座標Y |
| TRUE | 成功 | |
| FALSE | 失敗 |
| int DrawImage | ( | SGSurface * | base, | |
| const char * | filename, | |||
| int | x, | |||
| int | y, | |||
| int & | w, | |||
| int & | h, | |||
| int | shared = TRUE | |||
| ) |
イメージファイルの描画
指定した画像ファイルを読み込み、指定のサーフェースへ描画します。
filenameには画像ファイルを指定します。ファイルはリソースフォルダにあるものとして処理します。
初期リソースフォルダは "resources/" です。
void SGGraphics::SetImageFolder(const char* folder)
で変更することが出来ます。
リソースフォルダ以外のファイルを指定する場合はfilename文字列の先頭を「/」にしフルパスで指定して下さい。
shared に TRUE を指定すると読み込んだ画像イメージが共有イメージとしてメモリ(キャッシュ)に 保存されます。 アイコンなどのように複数回表示する可能性がある場合、2回目以降の表示が高速になります。
| base | 描画を行うサーフェース | |
| filename | 画像ファイル名 | |
| x | 表示座標X | |
| y | 表示座標Y | |
| w | 表示した画像の幅(取得用) | |
| h | 表示した画像の高さ(取得用) | |
| shared | 共有する/しない(TRUE) |
| TRUE | 成功 | |
| FALSE | 失敗 |
| SGDialog * GetActiveDialog | ( | ) |
アクティブなダイアログを取得する。
全ダイアログのうち、一番上にある状態のダイアログをアクティブダイアログといい、 そのダイアログのポインタを取得します。
この関数はポインタを取得する為、DialogReference()関数をコールし、参照フラグをセットします。 ポインタの参照が終わった後は必ずDialogUnReference()関数をコールし参照の終了処理を行う必要があります。
| SGDialog * GetDialogFromHandle | ( | SGHandle | handle | ) |
ダイアログ ハンドルからダイアログ クラスのポインタを取得する
ダイアログ ハンドルからダイアログ クラスのポインタを取得します この関数はポインタを取得する為、DialogReference()関数をコールし、参照フラグをセットします。 ポインタの参照が終わった後は必ずDialogUnReference()関数をコールし参照の終了処理を行う必要があります。
| handle | ダイアログハンドル |
| SGObject * GetObjectFromHandleEx | ( | SGHandle | handle | ) |
オブジェクト ハンドルからオブジェクト クラスのポインタを取得する
オブジェクト ハンドルからオブジェクト クラスのポインタを取得します
| handle | オブジェクト ハンドル |
| SGHandle GetHandleFromId | ( | int | id | ) |
ダイアログIDからダイアログ ハンドルを取得する
ダイアログIDからダイアログ ハンドルを取得します
| id | ダイアログID |
| int ToTopDialog | ( | SGHandle | handle | ) |
指定したダイアログの重ね順を最前面にする
ハンドルによって指定したダイアログの重ね順を最前面にします。
| handle | ダイアログ ハンドル |
| TRUE | 成功 | |
| FALSE | 失敗 |
| void AddDialog | ( | SGDialog * | dialog | ) |
ダイアログをリストに登録する
生成されたダイアログを登録します。
この関数は SGDialog::OpenDialog() からコールされます。直接使用することはありません。
| dialog | ダイアログ クラス |
| void DeleteDialog | ( | int | windowid | ) |
ダイアログの登録リストから削除する
指定したIDのダイアログを登録リストから削除します。
この関数は、ダイアログのクローズ イベントを受けてコールされます。
直接使用することはありません。
| windowid |
| void Closed | ( | SGHandle | handledlg, | |
| int | id, | |||
| int | param | |||
| ) |
ダイアログのクローズ通知を行う
SGDialog::Close() 関数内部からコールされます。この関数を直接使用することはありません。
ダイアログを閉じたことを全てのダイアログに通知するため、この関数は全てのダイアログの SGDialog::Closed() をコールします。
| handledlg | クローズしたダイアログのハンドル | |
| id | クローズしたダイアログのID | |
| param | ダイアログをクローズした際に与えられた任意のパラメータ |
| void MoveCursor | ( | int | x, | |
| int | y, | |||
| int | act | |||
| ) |
マウスイベントの通知を行う
マウスイベントの通知を行う際に使用します。 通常この関数は、イベント処理関数(SGCoreCheckEvent)からコールされます。
この関数は現在の最上位ウィンドウと、それ以外のダイアログでバックグラウンドでも イベントを受け取るよう設定されたダイアログに通知します。
| x | マウス座標X | |
| y | マウス座標Y | |
| act | 動作SG_ACT_DOWN ボタンが押された SG_ACT_UP ボタンが放された SG_ACT_MOVE マウスが移動した |
| void PostInitial | ( | SGHandle | handledlg, | |
| int | id | |||
| ) |
ダイアログのオープン通知を行う
ダイアログのオープン通知を全てのダイアログに行うために、オープンしたダイアログからコールされます。
この関数は現在オープンされている全てのダイアログの SGDialog::PostInitial() をコールします。
この関数を直接使用することはありません。
| handledlg | オープンしたダイアログのハンドル | |
| id | オープンしたダイアログのID |
| void PostEventUser | ( | int | param = 0, |
|
| void * | data = NULL, |
|||
| SGHandle | handledlg = 0, |
|||
| SGHandle | handleobj = 0 | |||
| ) |
ユーザ イベント通知を発行する
現在オープンしている全てのダイアログにメッセージを通知します。
通知を受けて各ダイアログの SGDialog::ReceiveUserEvent() を呼び出します。
パラメータは全てそのままダイアログに渡されます。
パラメータの使い方は全て任意です。例として、メッセージ通知者を特定する為に param へはダイアログID、 data へは通知したい内容変数のポインタ、 handledlg へは送信ダイアログ ハンドル、 handleobj へは送信オブジェクト ハンドル などを設定すると便利です。
| param | int型のパラメータ | |
| data | void型のデータポインタ | |
| handledlg | ダイアログ ハンドル | |
| handleobj | オブジェクト ハンドル |
| void EnableMouseMoveEvent | ( | int | enable | ) |
マウスの移動イベントを受け取るかどうかを設定する
押し下げていない状態でのマウスの移動イベントを受け取るかどうかを設定します。
この設定に関わらず、押し下げ状態での移動(ドラッグ)は常に受け取ります。
初期状態では「受け取らない(FALSE)」になっています。
タッチパネルを使用する場合は無効に設定することをお勧めします。
タッチパネルの特性上、タッチ時の瞬間プレス状態になるまでの微小な時間に不確定な移動(異常な座標)が検知されることがあります。
| enable | 有効/無効TRUE 有効(受け取る) FALSE 無効(受け取らない) |
| int GetFocusEnable | ( | ) |
フォーカス機能のOn/Off状態を取得する
フォーカス機能のOn/Off状態を取得します。
| TRUE | フォーカス機能はOnです | |
| FALSE | フォーカス機能はOffです |
| void SetFocusEnable | ( | int | enable | ) |
オブジェクトのフォーカス機能のOn/Offを行う
ボタンやエディットボックスのフォーカス機能のOn/Offを行います。
フォーカス機能がOnの場合、オブジェクトがカレントに指定されている場合、 そのオブジェクトイメージにフォーカス用のリソースが表示されます。
Offの場合、オブジェクトのフォーカス表示は行われません。
初期状態ではフォーカス機能はOffに設定されています。
| enable | On/OffTRUE: フォーカス機能を使う(On) FALSE: フォーカス機能を使わない(Off) |
| int GetEvent | ( | _SGEvent * | event | ) |
イベントを取得する。
イベントバッファからイベントを取得します。
取得したイベントは CheckEvent()で解析を行って下さい。
ダイアログエディタが自動生成した main.cpp の場合
while( !quit ){ _SGEvent event; if( app.GetEvent(&event) ){ if( app.CheckEvent(&event) == -1 ) quit = TRUE; } }
となってます。
SGApplication::GetEvent() は SGCore::GetEvent()を呼ぶラッパー関数です。
SGApplication::CheckEvent() は SGCore::CheckEvent()を呼ぶラッパー関数です。
| event | イベント |
| TRUE | イベントを取得した。 | |
| FLASE | イベントが取得出来ませんでした。 |
| void ClearEvent | ( | ) |
イベントキューをクリアする
イベントキューをクリアします。 ダイアログのクローズ要求など、現在キューに溜まっている全てのイベントをクリアしますので 使用には注意が必要です。
CancelEvent() の方が安全にイベントをクリア出来ます。
通常は CancelEvent() をご使用下さい。
| void CancelEvent | ( | int | flag = SG_CANCELEVENT_ALL |
) |
イベントをキャンセルする
イベントをキャンセルします。
時間のかかる処理でバッファに溜まったイベントから指定のイベントのみをクリアします。
SG_CANCELEVENT_BUTTONを使用する場合、関数、ClickButton()や、DownButton()では使用しないで下さい。
ボタンのUPイベントもキャンセルされてしまい、動作異常となってしまいます。
使用する場合は、UpButton()、もしくはClickButton()のパラメータ、actのSG_ACT_UPを確認して使用して下さい。
| flag | キャンセルするイベントタイプ(複数指定可能)SG_CANCELEVENT_MOUSE SG_CANCELEVENT_USER SG_CANCELEVENT_BUTTON SG_CANCELEVENT_ALL |
| int WaitWithCheckEvent | ( | int | msec | ) |
バックグラウンドでのイベント処理の提供とウェイト。
ウェイトを行います。
停止している間にメッセージを処理します。
メッセージ処理に時間がかかる場合、定期的にこの関数をコールすることで、 他のメッセージの流れを止めてしまうのを防げます。
※例えば、forやwhileを回っている間は、ボタンが押せなかったり、タイマーイベントが止まったり してしまいます。そのような時に、ループ内にこの関数を置くとイベントが流れます。
※注意として、この関数はネストに対応していません。2個同時にも動作しません。 どちらの場合も、後ろが優先されてしまいます。
また、メッセージの順番を変えてしまう可能性を考えて使用する必要があります。
※この処理(関数)は簡易的な処置として使用してください。
| msec | ウェイト時間 |
| int CheckEvent | ( | _SGEvent * | event | ) |
イベント処理関数
GetEvent()より取得したイベント(メッセージ)をチェックして必要な処理を行います。
ダイアログエディタが自動生成した main.cpp で使用しています。
while( !quit ){ _SGEvent event; if( app.GetEvent(&event) ){ if( app.CheckEvent(&event) == -1 ) quit = TRUE; } }
SGApplication::GetEvent() は SGCore::GetEvent()を呼ぶラッパー関数です。 SGApplication::CheckEvent() は SGCore::CheckEvent()を呼ぶラッパー関数です。
| event | イベント |
| 1 | 処理すべきメッセージがある時 | |
| 0 | 処理すべきメッセージがない時 | |
| -1 | アプリケーションの終了 |
| void ReleaseAction | ( | SGHandle | dhdlg, | |
| SGHandle | dhobj | |||
| ) |
押し下げボタンイメージを元に戻す
クリックにより押し下げられたイメージを元の状態に戻します。
| void SetEventButtonLimit | ( | int | limit | ) |
ボタン イベントの発行可能数を設定する
ボタン イベントの発行可能数を設定します。
ボタン イベントをバッファに挿入することの出来る数を制限します。
| limit | リミット(初期値=1) |
| void PostEventCursor | ( | int | x, | |
| int | y, | |||
| int | act | |||
| ) |
マウスのカーソル移動とボタン押下の通知をする
マウスのカーソル移動とボタン押下の通知をします。
| x | X座標 | |
| y | Y座標 | |
| act | アクションタイプSG_ACT_DOWN (0) 押した\n SG_ACT_UP (1) 離した\n SG_ACT_MOVE (4) カーソル移動 |
| void PostEventRequest | ( | int | type, | |
| int | val = 0 | |||
| ) |
| void PostEventButton | ( | int | act, | |
| int | click = FALSE | |||
| ) |
ボタンイベントを発行する。
ボタンイベントを発行します。
| act | アクションタイプSG_ACT_DOWN (0) 押下 SG_ACT_UP (1) 解放 SG_ACT_CLICK (2) 決定 SG_ACT_REPEAT(3) リピート | |
| click | クリック動作TRUE クリックを発行する\n FALSE クリックは発行しない\n |
| void PostEventKeyboard | ( | int | act, | |
| const char * | symbol_name | |||
| ) |
キーボードイベントを発行する。
キーボード イベントを発行します。
| act | アクションタイプSG_ACT_DOWN (0) 押下 SG_ACT_UP (1) 解放 | |
| symbol_name | キーの名前 |
| void PostEventWheel | ( | int | val | ) |
マウスホイールイベントを発行する。
マウスホイールイベントを発行します。
| val | 回転量と回転方向 正負で方向を表します。 |
| int PostEvent | ( | _SGUserEvent * | event | ) |
イベントを通知する
イベントを通知します。
全てのイベントはこの関数で通知されます。
イベント通知系の関数から使用されています。
この関数を直接使用しないで下さい。
| event | イベント |
| TRUE | 成功 | |
| FALSE | 失敗 |
| void ReleaseCheck | ( | SGHandle | handledlg | ) |
ダイアログの終了処理
ダイアログを閉じる場合に呼び出します。
これにより、以降そのダイアログにイベントが通知されないようになります。
SGDialog::Release() から使用されています。
この関数を直接使用することはありません。
| handledlg | ダイアログハンドル |
| void Sound | ( | int | type, | |
| int | val1, | |||
| int | val2 | |||
| ) |
ビープ音を鳴らすタイミングで呼ばれる。
「ボタンが押された」など音を鳴らすタイミングで呼ばれます。
このライブラリには音を鳴らす機能はありません。音を鳴らすタイミングを通知するものです。
typeは音の種類を決定する為にアクションの種類がセットされます。
val1、val12、は type によって変化します。
音を鳴らす場合は class SGSound を継承してオリジナルクラスを作成し、そのクラス中に音に関する 部分をコーディングします。
オリジナルサウンドクラスは
void SGCore::SetSoundClass(SGSound* sound)
で登録することにより、ライブラリよりコールされるようになります。
SG_SOUND_QUIT以外は
void SGDialog::Sound(int type,int val1,int val2)
からコールされるので特定のダイアログの特定の種類の音だけ変化させるような処理はできません
そのような場合は SGDialog::Sound()をオーバーライドして拡張することで可能になります。
| type | 種類SG_SOUND_BUTTON: ボタン押下でクリック発生時 val1:act アクション val2:handle オブジェクトのハンドル SG_SOUND_KEYBOARD: キーボード押下時 val1:act アクション val2:handle オブジェクトのハンドル SG_SOUND_QUIT: アプリケーションの終了時\n val1:未使用\n val2:未使用\n SG_SOUND_CLOSE: ダイアログのクローズ時 val1:handle ダイアログのハンドル val2:0 SG_SOUND_OPEN: ダイアログのオープン時 val1:handle ダイアログのハンドル val2:0 SG_SOUND_WHEEL: マウスホイールの回転時 val1:回転方向と値 val2:未使用 SG_SOUND_USER: ユーザ任意のタイミング val1:id val2:data(void*) | |
| val1 | 上記参照 | |
| val2 | 上記参照 |
| void SetSoundClass | ( | SGSound * | sound | ) |
音を鳴らすタイミングを受け取るコールバック関数を登録する
音を鳴らすタイミングを受け取るコールバック関数を登録します。
| sound | 作成したSGSoundクラスのポインタ |
| void SetCaretInterval | ( | int | time | ) |
キャレットの点滅周期を設定する。
| time | 点滅周期(10ms単位)デフォルトは40。(400ms点灯、400ms秒消灯) 0(ゼロ)指定で点滅なし。 |
| void SetCaretDialog | ( | SGDialog * | dlg, | |
| int | objid | |||
| ) |
キャレットを保持しているダイアログを登録する。
キャレットを保持しているダイアログを登録します。 登録した状態を解除する場合(キャレットを持たなくなった場合)は objid に SG_CARET_HIDE を指定します。
| dlg | ダイアログ | |
| objid | オブジェクトのID |
| int IsCaretDialog | ( | SGDialog * | dlg | ) |
指定したダイアログがキャレットを保持しているか調べる
指定したダイアログがキャレットを保持しているか調べます。
| dlg | ダイアログ |
| TRUE | 保持している | |
| FALSE | 保持していない |
| void DrawCaret | ( | int | w, | |
| int | h | |||
| ) |
キャレットを描画する。
この関数はキャレット表示の必要がある時にコールされます。
指定された幅と高さのパラメータと、予め登録されているキャレット形状の値に従いキャレットを描画します。
形状を描画する場合、この関数は SGApplication クラスの
int SGApplication::DrawCaret(SGSurface* surface,int type,int width,int height)
をコールします。
ユーザが任意の色、形でキャレットを描画する場合は SGApplication::DrawCaret をオーバーライドし、 その関数内で描画してください。 SGApplication::DrawCaret がTRUE(0以外)を返す時、この関数は描画を行わないで終了します。
SGApplication::DrawCaret をオーバーライドしない場合、関数は FALSE を返す為、この関数内で描画を行います。
キャレットの形状は SGCaret::SetCaretType(int type) で変更できます。
| w | キャレットの幅 | |
| h | キャレットの高さ |
| void MoveCaret | ( | int | x, | |
| int | y | |||
| ) |
キャレットを移動する。
指定した座標へキャレットを移動します。
| x | X座標 | |
| y | Y座標 |
| void BlinkCaret | ( | int | force = FALSE |
) |
キャレットを点滅させる。
キャレットを点滅させます。
| force | 無条件にコールします。 |
| int HideCaret | ( | ) |
キャレットを非表示にする
キャレットを非表示にします。
| TRUE | 成功 | |
| FALSE | 失敗 |
| int ShowCaret | ( | ) |
brief キャレットを表示する。
キャレットを表示します。 HideCaret() などで表示をOFFにした後など、キャレットの大きさ、位置などが正しいことが 分かっている時に使用してください。
ダイアログが切り替わったタイミングではキャレットの大きさ、位置などが不確定なので 関数 EditboxCtrl(EDITID,SG_CUR_POSITION,0); を使用して、位置・サイズの情報を更新して下さい。
| TRUE | 成功 | |
| FALSE | 失敗 |
| void SetCaretVisible | ( | ) |
brief キャレットの表示属性を表示状態にする。
キャレットの表示属性を表示状態にします。
キャレットの大きさ、位置などが不確定な時にキャレットを表示する際に使用します。 実際の表示は、位置、サイズ確定後、最初の点滅処理で表示が開始されます。
| int IsCaretVisible | ( | ) |
キャレットの表示・非表示状態を取得する
キャレットの表示・非表示状態を取得します。
| TRUE | 表示状態 | |
| FALSE | 非表示状態 |
| void SetResourceInfo | ( | SGResourceInfo * | info, | |
| int | playrec = SG_INFO_RELEASE, |
|||
| const char * | filename = NULL | |||
| ) |
アプリケーション実行時の動作LOGの記録と再生を行う
アプリケーション実行時の動作LOGの記録と再生を行う時に使用します。
infoは定義文字列情報を登録する為に用意します。
例えば、次のような定義がある場合
#define KEYBOARD 10 #define FNT16 1000
infoは
SGResourceInfo info[] =
{
{KEYBOARD,"KEYBOARD"},
{FNT16,"FNT16"}
};
となります。
リソースエディタを使用している場合、この部分のコードは自動生成プログラムの
resource.h 内に作成されています。
SGResourceInfoは sglib.h で次のように定義されています。
typedef struct {
int mId;
const char* mName;
} SGResourceInfo;
playrec に SG_INFO_RECORD を指定してアプリケーションを実行すると、ボタン操作などの メッセージがログファイル(filename)に保存されます。
次回起動時に SG_INFO_PLAY を指定するとアプリケーションはログファイルを元に、保存時と 同じ動作を始めます。
| info | IDとその名前を定義した構造体 | |
| playrec | モードSG_INFO_RELEASE(0) リリースモード SG_INFO_PLAY(1) 再生モード SG_INFO_RECORD(2) 記録モード | |
| filename | ログの記録・再生用ファイル名 |
| void ResourceInfoLogout | ( | ) |
消費メモリ確認用のログメッセージを出力する。
消費メモリ確認用のログメッセージを出力します。 アプリケーション終了直前に使用すれば、解放忘れのリソース、オブジェクトが存在しないか、 メモリーリークのチェックが可能です。
| void TimerLock | ( | ) |
セマフォロック(タイマー用)
タイマー用のセマフォロックします。 タイマーに関わる変数へのセット、参照時に使用します。
| void TimerUnlock | ( | ) |
セマフォアンロック(タイマー用)
タイマー用のセマフォロックを解除します。 タイマーに関わる変数へのセット、参照の終了時し使用します。