ダイアログを提供するクラス [詳細]
#include <sgdialog.h>
Public メソッド | |
SGDialog (SGCore *core, int id) | |
ダイアログクラスのコンストラクタ | |
virtual | ~SGDialog () |
ダイアログクラスのデストラクタ | |
SGCore * | GetCore () |
コアオブジェクトを取得する | |
SGGroupObject * | Group () |
ダイアログに登録されたオブジェクトを取得する | |
int | GetId () |
ダイアログIDを取得する。 | |
SGHandle | GetHandle () |
ハンドルを取得する。 | |
int | OpenDialog (int x, int y, int flags=0, int time=300) |
ダイアログを開く | |
void | Close (int param=0, int flags=-1, int time=-1) |
ダイアログを閉じる | |
void | Move (int dx, int dy) |
ダイアログを移動させる。 | |
void | SetSize (int w, int h) |
ダイアログのサイズを設定する | |
void | GetSize (int &w, int &h) |
ダイアログのサイズを取得する | |
void | GetDialogPos (int &x, int &y) |
ダイアログの位置を取得する。 | |
void | SetDialogPos (int x, int y) |
ダイアログの位置を変更する。 | |
void | SetColorBG (unsigned int col=((((unsigned int) 0x87)<< 24)|(((unsigned int) 0x00)<< 16)|(((unsigned int) 0x87)<< 8)|(unsigned int) 0x00)) |
ダイアログの背景色を設定する | |
unsigned int | GetColorBG () |
ダイアログの背景色を取得する | |
int | ToTop () |
ダイアログを最前面に移動する。 | |
void | Grab () |
ダイアログをドラッグ移動する状態にする。 | |
void | Ungrab () |
ダイアログのドラッグ移動状態を解放する。 | |
void | Show () |
ダイアログを表示する。 | |
void | Hide () |
ダイアログを非表示にする。 | |
int | GetBGFocus () |
バックグラウンドでのオブジェクト操作する/しないの設定情報の取得。 | |
int | SetBGFocus (int focus) |
バックグラウンドでもオブジェクトを操作する/しない。 | |
int | GetMovable () |
ドラッグ操作で移動可能かどうかの設定情報を返す。 | |
int | SetMovable (int move) |
ドラッグ操作で移動可能かどうかの設定をする。 | |
int | SetZStatus (int tatus) |
ダイアログの重ね順に関するステータスを設定する。 | |
int | GetZStatus () |
ウィンドウの重ね順に関するステータスを取得する。 | |
int | IsVisible () |
ダイアログが非表示かどうかを調べる。 | |
int | IsInside (int posx, int posy) |
指定した座標がダイアログ上に含まれるか判定する。 | |
int | IsTransparent (int posx, int posy) |
指定した座標が透明かどうか判定する | |
int | IsActive () |
ダイアログがアクティブか判定する | |
int | GetActiveDialog () |
アクティブなダイアログを取得する | |
int | GetActiveObject (int groupid=SG_DIALOG_OBJECTS_ID) |
アクティブなオブジェクトを取得する | |
SGHandle | HitTest (int posx, int posy) |
指定した位置にあるオブジェクトを調べます。 | |
void | SetPosition (int objid, int x, int y) |
オブジェクトの位置を設定する | |
void | SetPosition (int objid, int x, int y, int w, int h) |
オブジェクトの位置、サイズを設定する | |
void | SetSize (int objid, int w, int h) |
オブジェクトのサイズを設定する | |
void | GetSize (int objid, int &w, int &h) |
オブジェクトのサイズを取得する | |
void | GetPosition (int objid, int &x, int &y) |
オブジェクトの座標を取得する | |
void | SetAttr (int objid, int attr) |
オブジェクトの属性を設定する | |
int | GetAttr (int objid) |
オブジェクトの属性を取得する | |
SGObject * | GetObjectFromHandle (SGHandle handle) |
オブジェクトハンドルからオブジェクトを取得する | |
SGObject * | GetObject (int objid) |
オブジェクトIDからオブジェクトを取得する | |
SGObject * | GetKeyboardObj () |
キーボードオブジェクトを取得する | |
int | GetCaretObject () |
キャレットを持つオブジェクトを取得する。 | |
int | SetCaretObject (int id=SG_CARET_AUTO, int show=TRUE) |
オブジェクトにキャレットを設定する。 | |
void | SetFocusStop (int objid, int stop) |
フォーカスできる・できないを設定します。 | |
int | GetFocusObject () |
フォーカスを持つオブジェクトを取得する。 | |
int | SetFocusObject (int id) |
オブジェクトにフォーカスを設定する。 | |
int | FocusNext () |
オブジェクトのフォーカスを次のオブジェクトに設定する。 | |
int | FocusPrevious () |
オブジェクトのフォーカスを1つ前のオブジェクトに設定する。 | |
void | SetCursorPos (int objid) |
指定オブジェクトの中心へマウスカーソル位置を移動する | |
int | EditboxCtrl (int objid, int ctrl, int pos=-1) |
エディットボックスをコントロールする | |
int | EditboxCtrl (int objid, int ctrl, SGString *str) |
エディットボックスをコントロールする | |
int | EditboxCtrl (int objid, int ctrl, const char *str) |
エディットボックスをコントロールする。 | |
void | SetText (int objid, SGString text) |
オブジェクトの文字列を設定する | |
SGString * | GetText (int objid) |
オブジェクトの文字列を取得する | |
void | SetFontId (int objid, int fontid) |
オブジェクトで使用するフォントを設定する。 | |
int | GetFontId (int objid) |
オブジェクトの使用しているフォントを取得する。 | |
void | SetMarginX (int objid, int margin) |
オブジェクトの横方向マージンを設定する。 | |
int | GetMarginX (int objid) |
オブジェクトの横方向マージンを取得する。 | |
void | SetMarginY (int objid, int margin) |
オブジェクトの縦方向マージンを設定する。 | |
int | GetMarginY (int objid) |
オブジェクトの縦方向マージンを取得する。 | |
void | SetAlign (int objid, int align) |
オブジェクトのテキスト配置条件を設定する。 | |
int | GetAlign (int objid) |
オブジェクトのテキスト配置条件を取得する。 | |
void | SetObjectColor (int objid, unsigned int col) |
オブジェクトに文字色を設定する。 | |
unsigned int | GetObjectColor (int objid) |
オブジェクトの文字色を取得する。 | |
SGRect | Update (int objid, int attr=-1) |
オブジェクトの属性変更と更新する | |
SGRect | Update (int objid, const char *text) |
オブジェクトの文字列変更と更新する | |
SGRect | Update (int objid, int x, int y) |
オブジェクトの位置変更と更新する | |
SGRect | Update (int objid, int x, int y, int w, int h) |
オブジェクトの位置、サイズ変更と更新する | |
SGRect | Update (SGRect rect=SGRect(), int erase=1) |
表示画面の指定領域の更新(再描画)する | |
int | FlipOff () |
画面の更新を停止する | |
int | FlipOn () |
ダイアログのサーフェイスの内容を画面に反映する | |
void | DrawText (SGString text, int x, int y, int fontid, unsigned int col=((((unsigned int) 0x00)<< 24)|(((unsigned int) 0x00)<< 16)|(((unsigned int) 0x00)<< 8)|0xff)) |
文字列を描画する | |
void | DrawText (SGString text, int x, int y, int w, int h, int fontid, unsigned int col=((((unsigned int) 0x00)<< 24)|(((unsigned int) 0x00)<< 16)|(((unsigned int) 0x00)<< 8)|0xff), int align=SG_ALIGN_CENTER|SG_ALIGN_MIDDLE) |
文字列を描画する | |
void | GetTextSize (SGString text, int &width, int &height, int fontid) |
文字列を描画するのに必要な領域を取得する | |
void | SetTimerInterval (int time) |
ダイアログ タイマーインターバルを設定する。 | |
void | SetSingleTimerInterval (int time) |
ダイアログ シングル(ワンショット)タイマーインターバルを設定する。 | |
virtual void | DrawObject (SGRect region) |
オブジェクトを描画する。 | |
virtual void | Draw (SGRect region) |
表示の更新が必要な時に呼ばれる | |
virtual void | MoveCursor (int x, int y, int act) |
マウスカーソルが移動した時に呼ばれる。 | |
virtual void | PushButton (SGHandle handleobj, int act) |
マウスカーソルが移動した時に呼ばれる。 | |
virtual void | ClickButton (SGHandle handleobj, int act) |
ボタンオブジェクトまたはキーボードオブジェクトがクリックした時に呼ばれる | |
virtual void | DownButton (SGHandle handleobj, int act) |
ボタンオブジェクトまたはキーボードオブジェクトが押された時に呼ばれる | |
virtual void | UpButton (SGHandle handleobj, int act) |
ボタンオブジェクトまたはキーボードオブジェクトが放された時に呼ばれる | |
virtual void | PreInitial () |
ダイアログが開く直前の初期化タイミングで呼ばれる | |
virtual void | PostInitial (SGHandle handledlg, int id) |
ダイアログが開いた直後の初期化タイミングで呼ばれる | |
virtual void | Sound (int type, int val1, int val2) |
ビープ音を鳴らすタイミングで呼ばれる。 | |
virtual void | Timer (TimeVal time) |
ダイアログ タイマー イベントが発生した時呼ばれる | |
virtual void | SingleTimer (TimeVal time) |
ダイアログ シングル タイマーのイベントが発生した時呼ばれる | |
virtual void | ResetTimer () |
ダイアログ タイマーをリセット(停止)する。 | |
virtual void | ReceiveUserEvent (int param, void *data, SGHandle handledlg, SGHandle handleobj) |
ユーザイベントが発行された時に呼ばれる | |
virtual void | ChangePalette (SGPalette *pal) |
パレットが変更された時に呼ばれる | |
virtual void | Wheel (int step, int over, int top) |
マウスのホイールが回転した時に呼ばれる | |
virtual void | Closed (SGHandle handledlg, int id, int param) |
ダイアログが閉じた時に呼ばれる | |
virtual void | Inactivate () |
アクティブでなくなった時よばれる。 | |
virtual void | Activate () |
アクティブになった時よばれる。 | |
virtual const char * | GetIdName (int id=-1) |
ダイアログIDの名前を取得する。 | |
SGObject * | AddButton (int id, SGString text, int x, int y, int w, int imageid, int attr=SG_ATTR_NORMAL, int fontid=0, int align=SG_ALIGN_CENTER, int marginx=0, int marginy=0) |
ボタンオブジェクトを生成し追加する | |
SGObject * | AddEditbox (int id, SGString text, int x, int y, int w, int imageid, int attr=SG_ATTR_NORMAL, int fontid=0, int align=SG_ALIGN_CENTER, int marginx=0, int marginy=0) |
エディットボックスオブジェクトを生成し追加する | |
SGObject * | AddFrame (int id, SGString text, int x, int y, int w, int h, int imageid, int attr=SG_ATTR_NORMAL, int fontid=0, int align=SG_ALIGN_CENTER, int marginx=0, int marginy=0) |
フレームオブジェクトを生成し追加する | |
SGObject * | AddPicture (int id, int x, int y, int w, int h, const char *file, int attr=SG_ATTR_NORMAL, int shared=1) |
ピクチャー オブジェクトを生成し追加する | |
SGObject * | AddIcon (int id, int x, int y, int w, int h, const char *file, int attr=SG_ATTR_NORMAL, int shared=1) |
アイコン オブジェクトを生成し追加する | |
SGObject * | AddMovie (int id, int x, int y, const char *file, int attr=SG_ATTR_NORMAL, int loop=TRUE, int play=FALSE) |
ムービー オブジェクトを生成し追加する | |
SGObject * | AddCanvas (int id, int x, int y, int w, int h, int attr=SG_ATTR_NORMAL) |
キャンバス オブジェクトを生成し追加する | |
SGObject * | AddText (int id, SGString text, int x, int y, int w, int h, int fontid, int attr=SG_ATTR_NORMAL, unsigned int col=((((unsigned int) 0x00)<< 24)|(((unsigned int) 0x00)<< 16)|(((unsigned int) 0x00)<< 8)|0xff), unsigned int colsub=((((unsigned int) 0x78)<< 24)|(((unsigned int) 0x78)<< 16)|(((unsigned int) 0x78)<< 8)|0xff), int align=SG_ALIGN_CENTER, int marginx=0, int marginy=0) |
テキスト オブジェクトを生成し追加する | |
SGObject * | AddKeyboard (int id) |
キーボードオブジェクトを生成し追加する | |
void | PostEventClickObject (int id) |
オブジェクトをクリックする。 | |
int | DialogReference () |
ダイアログの参照を開始することを宣言する | |
int | DialogUnReference () |
ダイアログの参照を終了することを宣言する | |
フレンド | |
class | SGWindowDataList |
void | SGCore::PostEventButton (int act, int click) |
void | SGCore::ReleaseAction (SGHandle dhdlg, SGHandle dhobj) |
ダイアログを提供するクラス
ダイアログとは、レイヤー管理(面の積み重ねとその重ね順)された透明の描画枠です。
ダイアログには、ボタン、エディットボックスなどのオブジェクトを配置する事ができます。
また、イベント(マウス、クリック、キーボードなど)やメッセージも管理します。
イベント受取用の関数をオーバーライドし専用の動作を追加します。
○オープン時に一度だけ呼ばれる(初期化用) virtual void PostInitial(SGHandle handledlg,int id); ○表示の更新が必要な時に呼ばれる virtual void Draw(SGRect region); ○ボタンオブジェクトがクリックされ時に呼ばれる virtual void ClickButton(SGHandle handleobj,int act); ○設定したインターバルタイマー イベントが発生した時呼ばれる virtual void Timer(TimeVal time); ○ダイアログが閉じた時に呼ばれる virtual void Closed(SGHandle handledlg,int id,int param);
ダイアログクラスのコンストラクタ
ダイアログに必要なリソース領域を確保します。
このクラスは通常、継承して使います。
coreはアプリケーションが一つだけ保持するSGCoreのポインタを渡します。
通常、ダイアログの中から他のダイアログを開きますので GetCore()で取得できます。
それ以外の場所では app.GetCore()のように SGApplicationクラスから取得できます。
idはアプリケーション全体でユニークな数値を指定して下さい。
このidは、以降ダイアログの識別として使用し、いろいろな関数で使用されます。
core | SGCoreのポインタ | |
id | ダイアログのリソースID |
//-------------------------------------------------- // 宣言部分 class DlgSample : public SGDialog { public: DlgSample(SGCore* core); virtual ~DlgSample(); . . }; //-------------------------------------------------- // 定義部分 DlgSample::DlgSample(SGCore* core) : SGDialog(core, DLG_SAMPLE) { // 初期化 } //-------------------------------------------------- // 使用部分 DlgSample* pDlg = new DlgSample(GetCore()); pDlg->OpenDialog(80, 60);
~SGDialog | ( | ) | [virtual] |
ダイアログクラスのデストラクタ
ダイアログクラスのデストラクタです。 確保していたリソース領域が解放されていない場合、ここで解放しますが、 通常、 Release() で既に解放されています。
もしも、このダイアログが最後のダイアログの場合、SG_EVENTTYPE_QUIT メッセージを発行します。
このメッセージ発行後、メッセージ待ち受け関数
int SGCore::CheckEvent(_SGEvent* evt)
関数が(-1)を返します。
ダイアログエディタが自動生成した main.cpp は
while( !quit ){ _SGEvent event; if( app.GetEvent(&event) ){ if( app.CheckEvent(&event) == -1 ) quit = TRUE; } }
となっていますのでアプリケーションが終了します。
終了させたくない場合は main.cpp を編集して下さい。
SGGroupObject * Group | ( | ) |
ダイアログに登録されたオブジェクトを取得する
ダイアログクラスは1つのSGGroupObjectを保持しています。
ダイアログに登録される各オブジェクトはこのグループクラスのリスト構造の 1つとして記憶されます。
このグループオブジェクトの中にもグループオブジェクトが存在する場合があります。 このダイアログクラスが保持するSGGroupObjectは GetParent()でNULLを返します。
int GetId | ( | ) |
ダイアログIDを取得する。
ダイアログIDを取得します。
SGHandle GetHandle | ( | ) |
ハンドルを取得する。
ウィンドウのハンドルを取得します。
int OpenDialog | ( | int | x, | |
int | y, | |||
int | flags = 0 , |
|||
int | time = 300 | |||
) |
ダイアログを開く
パラメータx,yの位置にダイアログを開きます。
アニメーションを行わない場合はflags、timeは省略し、x,yのみ指定します。
メニューやプルダウン表示のようにスクロールしながら現れる(アニメーション)ように する場合はflags、timeを指定します。
この関数は自分自身の、
PreInitial();
Sound(int type=SG_SOUND_OPEN,int val1=Handle,int val2=0);
をコールします。また、全部のダイアログの
PostInitial(SGHandle handledlg,int id); をコールします。
x | ダイアログ左上のx座標 | |
y | ダイアログ左上のy座標 | |
flags | アニメーション動作SG_DLG_SCROLL_DOWN 上から出現します。 SG_DLG_SCROLL_UP 下から出現します。 SG_DLG_SCROLL_RIGHT 左から出現します。 SG_DLG_SCROLL_LEFT 右から出現します。 SG_DLG_HIDE 見えない状態のままにする。 省略可能(省略時アニメーションなし) | |
time | 開く(閉じる)までにかける時間(ms) 省略可能(省略時300ms) |
TRUE | 正常 | |
FALSE | 異常 |
void Close | ( | int | param = 0 , |
|
int | flags = -1 , |
|||
int | time = -1 | |||
) |
ダイアログを閉じる
ダイアログのクローズを開始します。
この関数をコールすると全てのダイアログの
void SGDialog::Closed(SGHandle handledlg,int id,int param)
関数がコールされます。この時全てのダイアログにパラメータとして ここで指定された param が通知されます。
全ての関数への通知の後、SG_EVENTTYPE_CLOSEメッセージが発行され、 ダイアログの登録リストから削除されます。この時 Release()が呼ばれ リソースの解放が行われます。
param | 全てのダイアログに通知する任意の値 省略可能(省略時は0) | |
flags | アニメーション動作SG_DLG_SCROLL_DOWN 上へクローズします。 SG_DLG_SCROLL_UP 下へクローズします。 SG_DLG_SCROLL_RIGHT 左へクローズします。 SG_DLG_SCROLL_LEFT 右へクローズします。 省略可能(省略時はオープン時の動作に連動します) | |
time | (-1)閉じるまでにかける時間(ms) 省略可能、省略時または-1を指定した場合はオープン時に指定された時間を採用します。 |
void Move | ( | int | dx, | |
int | dy | |||
) |
ダイアログを移動させる。
ダイアログを現在の位置から指定量、移動させます。 指定する値は絶対座標でなく相対座標です。ご注意ください。
dx | x方向移動量 | |
dy | y方向移動量 |
void SetSize | ( | int | w, | |
int | h | |||
) |
ダイアログのサイズを設定する
ダイアログのサイズを設定します。
w | 横幅 | |
h | 高さ |
void GetSize | ( | int & | w, | |
int & | h | |||
) |
void GetDialogPos | ( | int & | x, | |
int & | y | |||
) |
ダイアログの位置を取得する。
ダイアログの位置(座標)を取得します。
x | 座標X(取得用) | |
y | 座標Y(取得用) |
void SetDialogPos | ( | int | x, | |
int | y | |||
) |
ダイアログの位置を変更する。
ダイアログの位置を座標(x,y)へ移動させます。
x | 座標X | |
y | 座標Y |
void SetColorBG | ( | unsigned int | col = ((((unsigned int) 0x87 )<<24)|(((unsigned int) 0x00 )<<16)|(((unsigned int) 0x87 )<<8)|(unsigned int) 0x00 ) |
) |
ダイアログの背景色を設定する
ダイアログの背景色を設定します。
col | 背景色 |
unsigned int GetColorBG | ( | ) |
ダイアログの背景色を取得する
ダイアログの背景色を取得します。
int ToTop | ( | ) |
ダイアログを最前面に移動する。
ダイアログの重ね合わせ順を一番上に変更します。
他のダイアログが上に重なった状態で、一部または全部が見えなくなっている時に 重なり順を一番上に変更し見える状態にします。
TRUE | 成功。一番上に移動しました。 | |
FALSE | 失敗 |
void Grab | ( | ) |
ダイアログをドラッグ移動する状態にする。
ダイアログをドラッグ移動させるような場合に使用します。
この関数コール後、 SGDialog::Ungrab()をコールするまで、マウス移動操作は ダイアログをドラッグ移動させます。
解放するには SGDialog::Ungrab()を使用します。
void Ungrab | ( | ) |
ダイアログのドラッグ移動状態を解放する。
ダイアログをドラッグ移動させるような場合に使用します。
SGDialog::Grab()でのドラッグ状態から解放します。
void Show | ( | ) |
void Hide | ( | ) |
ダイアログを非表示にする。
ダイアログを非表示に(見えないように)します。
クローズはしません。
Show()で元に戻ります。
int GetBGFocus | ( | ) |
バックグラウンドでのオブジェクト操作する/しないの設定情報の取得。
ダイアログがアクティブでない状態でもボタンなどの操作をするか、しないかの設定状態を取得します。
TRUE | バックグラウンドでも操作できる | |
FALSE | バックグラウンドでは操作できない(初期化時) |
int SetBGFocus | ( | int | focus | ) |
バックグラウンドでもオブジェクトを操作する/しない。
ダイアログがアクティブでない状態でもボタンなどの操作をするか、しないかを設定します。
初期状態ではボタンなどの操作はできません。
新しいウィンドウをオープン後もボタンなどの操作を有効にするにはこの関数でTRUEを設定する 必要があります。
focus | フォーカスTRUE バックグラウンドでも操作できる FALSE バックグラウンドでは操作できない(初期化時) |
int GetMovable | ( | ) |
ドラッグ操作で移動可能かどうかの設定情報を返す。
ダイアログをマウスのドラッグ操作で移動するか、しないかの設定状態を取得します。
TRUE | 移動する | |
FALSE | 移動しない(初期化時) |
int SetMovable | ( | int | move | ) |
ドラッグ操作で移動可能かどうかの設定をする。
ダイアログをマウスのドラッグ操作で移動するか、しないかを設定します。
一般のPCアプリケーションはタイトル部分のドラッグで移動や、重なりを最上位へ移動させる 機能がついていますが、PlusGライブラリで作られるアプリケーションは初期状態では、 ダイアログ移動も、重ね順移動もオフに設定されています。
マウスで移動可能にするには SGDialog::SetMovable() をTRUEで使用します。
マウスクリック時に重なり順を上に移動させるには SGDialog::SetZStatus() をSG_ZSTATUS_UPで使用します。
move | ON/OFF設定TRUE 移動する FALSE 移動しない(初期値) |
int SetZStatus | ( | int | status | ) |
ダイアログの重ね順に関するステータスを設定する。
ダイアログの重ね順に関するステータスを設定します。
一般のPCアプリケーションはタイトル部分のドラッグで移動や、重なりを最上位へ移動させる 機能がついていますが、PlusGライブラリで作られるアプリケーションは初期状態では、 ダイアログ移動も、重ね順移動もオフに設定されています。
マウスクリック時に重なり順を上に移動させるには SGDialog::SetZStatus() をSG_ZSTATUS_UPで使用します。 マウスで移動可能にするには SGDialog::SetMovable() をTRUEで使用します。
status | 新しいステータスSG_ZSTATUS_LOCK 0 クリックしても順番は変化しません。(デフォルト) SG_ZSTATUS_UP 1 クリックされると最前にアップします。 SG_ZSTATUS_TOPMOST 2 常に最前になるようになります。(未対応) SG_ZSTATUS_DESKTOP 3 常に一番下になるようになります(BOTTOMMOST)(未対応) |
int GetZStatus | ( | ) |
ウィンドウの重ね順に関するステータスを取得する。
ウィンドウの重ね順に関するステータスを取得します。
SG_ZSTATUS_LOCK 0 クリックしても順番は変化しません。(デフォルト) SG_ZSTATUS_UP 1 クリックされると最前にアップします。 SG_ZSTATUS_TOPMOST 2 常に最前になるようになります。(未対応) SG_ZSTATUS_DESKTOP 3 常に一番下になるようになります(BOTTOMMOST)(未対応)
int IsVisible | ( | ) |
int IsInside | ( | int | posx, | |
int | posy | |||
) |
指定した座標がダイアログ上に含まれるか判定する。
指定したポイント(座標)がダイアログの範囲内にあるかどうかを判定します。
ポイントはスクリーン座標系(画面左上からの座標)です。
posx | 判定点の座標X(スクリーン座標系) | |
posy | 判定点の座標Y(スクリーン座標系) |
TRUE | 指定の座標はダイアログ上にあります。 | |
FALSE | 指定の座標はダイアログの外側にあります。 |
int IsTransparent | ( | int | posx, | |
int | posy | |||
) |
指定した座標が透明かどうか判定する
指定したポイント(座標)がダイアログの範囲内で且つその部分が透明かどうかを判定します。
ポイントはスクリーン座標系(画面左上からの座標)です。
posx | 判定点の座標X(スクリーン座標系) | |
posy | 判定点の座標Y(スクリーン座標系) |
TRUE | 指定の座標はダイアログ上で且つ透明部分です。 | |
FALSE | 指定の座標はダイアログの外側か、内側で透明では無い部分です。 |
SGSurfaceを再定義しています。
int IsActive | ( | ) |
ダイアログがアクティブか判定する
ダイアログがアクティブ(複数のダイアログのうち、一番上にある状態)かどうかを判断します。
TRUE | アクティブです。 | |
FALSE | アクティブではない。 |
int GetActiveDialog | ( | ) |
アクティブなダイアログを取得する
アクティブな(複数のダイアログのうち、一番上にある)ダイアログのIDを取得します。
int GetActiveObject | ( | int | groupid = SG_DIALOG_OBJECTS_ID |
) |
アクティブなオブジェクトを取得する
指定のグループ内でのACTIVEなオブジェクトIDを取得します
(なければ0を返します) 全てのオブジェクトは SG_DIALOG_OBJECTS_ID というIDのグループ内に登録されています。
パラメータIDを省略すると SG_DIALOG_OBJECTS_ID が指定されますので、現在のダイアログから 最初に見つかるアクティブなオブジェクトを見つけようとします。
groupid | 省略時(SG_DIALOG_OBJECTS_ID) |
ID | アクティブなオブジェクトのID | |
0 | アクティブなオブジェクトが見つからなかった |
SGHandle HitTest | ( | int | posx, | |
int | posy | |||
) |
指定した位置にあるオブジェクトを調べます。
指定した位置(座標)にあるオブジェクトを調べ、オブジェクトIDを返します。 ポイントはスクリーン座標系(画面左上からの座標)です。
posx | 判定点の座標X(スクリーン座標系) | |
posy | 判定点の座標Y(スクリーン座標系) |
0(ゼロ)以上 | 指定した位置に存在するオブジェクトのID | |
0(ゼロ) | 指定した位置にはオブジェクトが見つかりませんでした。 |
void SetPosition | ( | int | objid, | |
int | x, | |||
int | y | |||
) |
オブジェクトの位置を設定する
位置情報は変更しますが画面には反映されません。実際に反映させるには
void SGObject::Update()
int SGDialog::Flip()
をコールする必要があります。位置を変更する時は
void SGDialog::Update(int objid,int x,int y) を使用した方が便利です。
objid | オブジェクトID | |
x | X座標 | |
y | Y座標 |
void SetPosition | ( | int | objid, | |
int | x, | |||
int | y, | |||
int | w, | |||
int | h | |||
) |
オブジェクトの位置、サイズを設定する
位置、サイズ情報は変更しますが画面には反映されません。実際に反映させるには
void SGObject::Update()
int SGDialog::Flip()
をコールする必要があります。位置、サイズを変更する時は
void SGDialog::Update(int objid,int x,int y,int w,int h) を使用した方が便利です。
objid | オブジェクトID | |
x | X座標 | |
y | Y座標 | |
w | 幅 | |
h | 高さ |
void SetSize | ( | int | objid, | |
int | w, | |||
int | h | |||
) |
オブジェクトのサイズを設定する
サイズ情報は変更しますが画面には反映されません。実際に反映させるには
void SGObject::Update()
int SGDialog::Flip()
をコールする必要があります。サイズを変更する時は
void SGDialog::Update(int objid,IGNORE,IGNORE,int w,int h) を使用した方が便利です。
objid | オブジェクトID | |
w | 幅 | |
h | 高さ |
void GetSize | ( | int | objid, | |
int & | w, | |||
int & | h | |||
) |
オブジェクトのサイズを取得する
指定したオブジェクトのサイズを取得します。
objid | オブジェクトID | |
w | 幅 (取得用) | |
h | 高さ(取得用) |
void GetPosition | ( | int | objid, | |
int & | x, | |||
int & | y | |||
) |
オブジェクトの座標を取得する
指定したオブジェクトの座標を取得します。
objid | オブジェクトID | |
x | X座標(取得用) | |
y | Y座標(取得用) |
void SetAttr | ( | int | objid, | |
int | attr | |||
) |
オブジェクトの属性を設定する
指定したオブジェクトの属性を設定します。
属性は変更しますが画面には反映されません。実際に反映させるには
void SGObject::Update()
int SGDialog::Flip()
をコールする必要があります。しかし実際にはフォーカスの変化やグループ中のアクティブ処理なども 行う必要があるので、属性を変更する時は
void SGDialog::Update(int objid,int attr)
を使用した方が便利です。
objid | オブジェクトID | |
attr | 属性SG_ATTR_NORMAL (0) SG_ATTR_DISABLE (1) SG_ATTR_ACTIVE (2) SG_ATTR_FOCUS (3) SG_ATTR_DOWN (4) SG_ATTR_ACTDOWN (5) SG_ATTR_HIDE (6) SG_FOCUS_ON (16) SG_FOCUS_OFF (17) |
int GetAttr | ( | int | objid | ) |
オブジェクトの属性を取得する
指定したオブジェクトの属性を取得します。
objid | オブジェクトID |
SGObject * GetObjectFromHandle | ( | SGHandle | handle | ) |
SGObject * GetObject | ( | int | objid | ) |
オブジェクトIDからオブジェクトを取得する
与えられた objid オブジェクトIDからオブジェクト クラスのポインタを取得します。
objid | オブジェクトID |
SGObject * GetKeyboardObj | ( | ) |
int GetCaretObject | ( | ) |
キャレットを持つオブジェクトを取得する。
ダイアログ内にエディットボックス オブジェクトが複数ある場合に、 どのオブジェクトがキャレットを持っているのか確認する場合に使用します。
※キャレットは1つのエディットボックス オブジェクトにのみ存在します。
int SetCaretObject | ( | int | id = SG_CARET_AUTO , |
|
int | show = TRUE | |||
) |
オブジェクトにキャレットを設定する。
指定したエディットボックス オブジェクトにキャレットを表示させます。
(またはキャレットを消す)
ここで指定したオブジェクトは関数 GetCaretObject() で取得できます。
関数 EditboxCtrl() でエディットボックス文字列を編集する際の ID 指定時に使用すると便利です。
id に SG_CARET_HIDE を指定した場合は HideCaret() がコールされキャレットは非表示となりますが、 show を FALSE にした場合は ShowCaret() をコールしないという指示で、表示中のキャレットが非表示になる わけではありません。show を FALSE にした場合、表示/非表示の状態を変化させないという指示になります。
ダイアログはオープン時キャレットは非表示になっています。この関数 SetCaretObject() で第2パラメータを 省略して(またはTRUEで)コールした時点でキャレットが表示されます。
id | エディットボックス オブジェクトID 省略した場合 SG_CARET_AUTO となります。 オブジェクトID以外に次の機能コードを指定することもできます。 SG_CARET_AUTO(0) 自動で最初に見つかったエディットボックス オブジェクトにキャレットを置きます SG_CARET_HIDE(-1) キャレットを消します。 | |
show | キャレット表示 TRUE:する(省略時) FALSE:しない |
void SetFocusStop | ( | int | objid, | |
int | stop | |||
) |
フォーカスできる・できないを設定します。
指定したオブジェクトがフォーカスできるか、できないようにするかを設定します。
フォーカスとはそのオブジェクトが選択された状態のことです。
初期状態では、EditBoxObjectとButtonObjectにはフラグ「TRUE」が設定されています
それ以外のオブジェクトにはフラグ「FALSE」が設定されています
objid | オブジェクトID | |
stop | フラグTRUE(1) フォーカスできるようになります FALSE(0) フォーカスできないようになります |
int GetFocusObject | ( | ) |
フォーカスを持つオブジェクトを取得する。
現在フォーカスを持っているオブジェクトのIDを取得します。
0(ゼロ)以上 | フォーカスを持っているオブジェクトのID | |
0(ゼロ) | 失敗。フォーカスを持っているオブジェクトが無かった。 |
int SetFocusObject | ( | int | id | ) |
オブジェクトにフォーカスを設定する。
指定のオブジェクトにフォーカスを設定します。
設定前にフォーカスを持っていたオブジェクトのフォーカス解除も行います。
id | オブジェクトID |
0(ゼロ)以上 | 新しくフォーカスを持ったオブジェクトのID | |
0(ゼロ) | 失敗。フォーカスを設定できませんでした。 |
int FocusNext | ( | ) |
オブジェクトのフォーカスを次のオブジェクトに設定する。
現在のフォーカスを持っているオブジェクトの次のオブジェクトにフォーカスを設定します。
設定前にフォーカスを持っていたオブジェクトのフォーカス解除も行います。
0(ゼロ)以上 | 新しくフォーカスを持ったオブジェクトのID | |
0(ゼロ) | 失敗。フォーカスを設定できませんでした。 |
int FocusPrevious | ( | ) |
オブジェクトのフォーカスを1つ前のオブジェクトに設定する。
現在のフォーカスを持っているオブジェクトの1つ前のオブジェクトにフォーカスを設定します。
設定前にフォーカスを持っていたオブジェクトのフォーカス解除も行います。
0(ゼロ)以上 | 新しくフォーカスを持ったオブジェクトのID | |
0(ゼロ) | 失敗。フォーカスを設定できませんでした。 |
void SetCursorPos | ( | int | objid | ) |
指定オブジェクトの中心へマウスカーソル位置を移動する
指定オブジェクトの中心へマウスカーソルを移動します。
objid | オブジェクトID |
int EditboxCtrl | ( | int | objid, | |
int | ctrl, | |||
int | pos = -1 | |||
) |
エディットボックスをコントロールする
エディットボックスのキャレット移動と文字の削除を行います。 pos は ctrl が SG_CUR_POSITION の時のみ使用します。
objid | オブジェクトID | |
ctrl | 機能コードSG_CUR_POSITION キャレット位置をpos文字目に移動します。 SG_CUR_FORWARD キャレット位置を一文字分進めます。 SG_CUR_BACK キャレット位置を一文字分戻します。 SG_CUR_BEGIN キャレット位置を先頭に移動します。 SG_CUR_LAST キャレット位置を文字列の最後に移動します。 SG_CUR_DELETE キャレット位置の文字を削除します。 SG_CUR_REMOVEALL 全ての文字を削除します | |
pos | キャレット位置(ctrlがSG_CUR_POSITIONの時のみ) |
0以上 | 現在のキャレット位置 | |
-1 | エラー |
int EditboxCtrl | ( | int | objid, | |
int | ctrl, | |||
SGString * | str | |||
) |
エディットボックスをコントロールする
エディットボックスのキャレット移動と文字の追加、削除を行います。 pos は ctrl が SG_CUR_POSITION の時のみ使用します。
objid | オブジェクトID | |
ctrl | 機能コードSG_CUR_FORWARD キャレット位置を一文字分進めます。 SG_CUR_BACK キャレット位置を一文字分戻します。 SG_CUR_BEGIN キャレット位置を先頭に移動します。 SG_CUR_LAST キャレット位置を文字列の最後に移動します。 SG_CUR_DELETE キャレット位置の文字を削除します。 SG_CUR_REMOVEALL 全ての文字を削除します SG_CUR_INSERT キャレット位置に文字を挿入します。 SG_CUR_ADD 最後に文字を追加します。 | |
str | 文字 |
0以上 | 現在のキャレット位置 | |
-1 | エラー |
int EditboxCtrl | ( | int | objid, | |
int | ctrl, | |||
const char * | str | |||
) |
エディットボックスをコントロールする。
エディットボックスのキャレット移動と文字の追加、削除を行います。 pos は ctrl が SG_CUR_POSITION の時のみ使用します。
objid | オブジェクトID | |
ctrl | 機能コードSG_CUR_FORWARD キャレット位置を一文字分進めます。 SG_CUR_BACK キャレット位置を一文字分戻します。 SG_CUR_BEGIN キャレット位置を先頭に移動します。 SG_CUR_LAST キャレット位置を文字列の最後に移動します。 SG_CUR_DELETE キャレット位置の文字を削除します。 SG_CUR_REMOVEALL 全ての文字を削除します SG_CUR_INSERT キャレット位置に文字を挿入します。 SG_CUR_ADD 最後に文字を追加します。 | |
str | 文字 |
0以上 | 現在のキャレット位置 | |
-1 | エラー |
void SetText | ( | int | objid, | |
SGString | text | |||
) |
オブジェクトの文字列を設定する
文字列は変更しますが画面には反映されません。実際に反映させるには
void SGObject::Update()
int SGDialog::Flip()
をコールする必要があります。文字列を変更する時は
void SGDialog::Update(int objid,const char* text) を使用した方が便利です。
objid | オブジェクトID | |
text | 文字列 |
SGString * GetText | ( | int | objid | ) |
オブジェクトの文字列を取得する
オブジェクトの文字列を取得します。
objid | オブジェクトID |
void SetFontId | ( | int | objid, | |
int | fontid | |||
) |
オブジェクトで使用するフォントを設定する。
表示の際にオブジェクトが使用するフォントを変更(設定)します。
objid | オブジェクトID | |
fontid | フォントのリソースID |
int GetFontId | ( | int | objid | ) |
オブジェクトの使用しているフォントを取得する。
表示の際にオブジェクトが使用しているフォントを取得します。
objid | オブジェクトID |
void SetMarginX | ( | int | objid, | |
int | margin | |||
) |
オブジェクトの横方向マージンを設定する。
オブジェクトが文字列表示の際に使用する横方向マージン情報を変更(設定)します。
objid | オブジェクトID | |
margin | マージン |
int GetMarginX | ( | int | objid | ) |
オブジェクトの横方向マージンを取得する。
オブジェクトが文字列表示の際に使用する横方向マージン情報を取得します。
objid | オブジェクトID |
void SetMarginY | ( | int | objid, | |
int | margin | |||
) |
オブジェクトの縦方向マージンを設定する。
オブジェクトが文字列表示の際に使用する縦方向マージン情報を変更(設定)します。
objid | オブジェクトID | |
margin | マージン |
int GetMarginY | ( | int | objid | ) |
オブジェクトの縦方向マージンを取得する。
オブジェクトが文字列表示の際に使用する縦方向マージン情報を取得します。
objid | オブジェクトID |
void SetAlign | ( | int | objid, | |
int | align | |||
) |
オブジェクトのテキスト配置条件を設定する。
オブジェクトが文字列表示の際に使用する配置条件を変更(設定)します。
objid | オブジェクトID | |
align | 配置 左右方向の寄せ SG_ALIGN_CENTER 中央 SG_ALIGN_LEFT 左寄せ SG_ALIGN_RIGHT 右寄せ 上下方向の寄せ SG_ALIGN_MIDDLE 中央 SG_ALIGN_TOP 上寄せ SG_ALIGN_BOTTOM 下寄せ 属性 SG_ALIGN_XSTRETCH 横方向が枠に収まらない時は幅を縮小して全部を表示します。 SG_ALIGN_YSTRETCH 縦方向が枠に収まらない時は高さを縮小して全部を表示します。 SG_ALIGN_STRETCH 横方向または縦方向が枠に収まらない時は縮小して全部を表示します。 SG_ALIGN_COMMA 3桁毎にカンマを追加し、通貨表示にします(1,234,567) SG_ALIGN_NOCLIP 枠からはみ出す場合でもクリップしないでそのまま表示します。 左右方向の寄せと上下方向の寄せをそれぞれ指定できます。 |
int GetAlign | ( | int | objid | ) |
オブジェクトのテキスト配置条件を取得する。
オブジェクトが文字列表示の際に使用する配置条件を取得します。
objid | オブジェクトID |
void SetObjectColor | ( | int | objid, | |
unsigned int | col | |||
) |
オブジェクトに文字色を設定する。
オブジェクトが文字列表示の際に使用する文字色を変更(設定)します。
objid | オブジェクトID | |
col | 文字色 |
unsigned int GetObjectColor | ( | int | objid | ) |
オブジェクトの文字色を取得する。
オブジェクトが文字列表示の際に使用する文字色を取得します。
objid | オブジェクトID |
SGRect Update | ( | int | objid, | |
int | attr = -1 | |||
) |
オブジェクトの属性変更と更新する
指定したオブジェクトの属性変更と画面への反映、フォーカスの変化、グループ中のアクティブ処理など 属性変更に伴う必要処理を全て行います。
void SGObject::SetAttr(int attr)
void SGObject::Update()
int SGDialog::Flip()
などの関数がコールされます。
この関数は内部で Flip()を使用します。 Flip()をコールする関数を連続して使用する場合、 速度が著しく低下する場合があります。そのような場合 Update()の前に FlipOff()、 全ての Update()の後に FlipOn()をコールすると Flip()が抑制され速度が向上します。
特定のオブジェクトの表示を更新(再描画)させる場合も、 attrを省略して Update(ID)と、この関数を使用すると便利です。
この関数は画面表示が完了してから使用できるようになります。
よってコンストラクタ、PreInitial()の中では使用できません。 PostItitial()から使用できるようになります。
objid | オブジェクトID | |
attr | 属性SG_ATTR_NORMAL (0) SG_ATTR_DISABLE (1) SG_ATTR_ACTIVE (2) SG_ATTR_FOCUS (3) SG_ATTR_DOWN (4) SG_ATTR_ACTDOWN (5) SG_ATTR_HIDE (6) SG_FOCUS_ON (16) SG_FOCUS_OFF (17) ※省略可能です |
SGRect Update | ( | int | objid, | |
const char * | text | |||
) |
オブジェクトの文字列変更と更新する
指定したオブジェクトの文字列変更と画面への反映など、文字列変更に伴う必要処理を全て行います。
void SGObject::SetText(SGString text)
void SGObject::Update()
int SGDialog::Flip()
などの関数がコールされます。
この関数は内部で Flip()を使用します。 Flip()をコールする関数を連続して使用する場合、 速度が著しく低下する場合があります。そのような場合 Update()の前に FlipOff()、 全ての Update()の後に FlipOn()をコールすると Flip()が抑制され速度が向上します。
この関数は画面表示が完了してから使用できるようになります。
よってコンストラクタ、PreInitial()の中では使用できません。 PostItitial()から使用できるようになります。
objid | オブジェクトID | |
text | 文字列 |
SGRect Update | ( | int | objid, | |
int | x, | |||
int | y | |||
) |
オブジェクトの位置変更と更新する
指定したオブジェクトの位置変更と画面への反映など、位置変更に伴う必要処理を全て行います。
void SGObject::SetPosition(int x,int y)
void SGObject::Update()
int SGDialog::Flip()
などの関数がコールされます。
この関数は内部で Flip()を使用します。 Flip()をコールする関数を連続して使用する場合、 速度が著しく低下する場合があります。そのような場合 Update()の前に FlipOff()、 全ての Update()の後に FlipOn()をコールすると Flip()が抑制され速度が向上します。
この関数は画面表示が完了してから使用できるようになります。
よってコンストラクタ、PreInitial()の中では使用できません。 PostItitial()から使用できるようになります。
objid | オブジェクトID | |
x | X座標 | |
y | Y座標 |
SGRect Update | ( | int | objid, | |
int | x, | |||
int | y, | |||
int | w, | |||
int | h | |||
) |
オブジェクトの位置、サイズ変更と更新する
指定したオブジェクトの位置、サイズ変更と画面への反映など、位置、サイズ変更に伴う必要処理を全て行います。
void SGObject::SetPosition(int x,int y,int w,int h)
void SGObject::Update()
int SGDialog::Flip()
などの関数がコールされます。
この関数は内部で Flip()を使用します。 Flip()をコールする関数を連続して使用する場合、 速度が著しく低下する場合があります。そのような場合 Update()の前に FlipOff()、 全ての Update()の後に FlipOn()をコールすると Flip()が抑制され速度が向上します。
この関数は画面表示が完了してから使用できるようになります。
よってコンストラクタ、PreInitial()の中では使用できません。 PostItitial()から使用できるようになります。
objid | オブジェクトID | |
x | X座標 | |
y | Y座標 | |
w | 幅 | |
h | 高さ |
表示画面の指定領域の更新(再描画)する
ダイアログの指定領域に表示されている全ての表示更新(再描画)を行います。
rectは更新を行う領域です、省略もしくは SGRect()と空の領域を指定するとダイアログ全体になります。
eraseがTRUE(1)の場合、再表示の前にいったん透明で塗りつぶしを行います。
この関数は画面表示が完了してから使用できるようになります。
よってコンストラクタ、PreInitial()の中では使用できません。 PostItitial()から使用できるようになります。
rect | 領域 ※省略時はダイアログの表示範囲の全体です。 | |
erase | 消す/消さないTRUE(1) 再表示の前に領域を透明で塗りつぶす FALSE(0) 再表示のみを行う |
int FlipOff | ( | ) |
画面の更新を停止する
この関数は、画面(フレームバッファ)への反映を抑制します。
FlipOff()実行後 Flip()や Update()など Flip()をコールする関数を呼び出しても 画面は変化しません。
この抑制は FlipOn()を呼び出すことで解除でき、解除時に Flip()が実行されます。
FlipOff()はネスト(入れ子)可能です。 FlipOff()中の FlipOff()回数はカウントアップされ、 FlipOn()でカウントダウンします、カウントがゼロに戻った時 Flip()が実行されます。
int FlipOn | ( | ) |
ダイアログのサーフェイスの内容を画面に反映する
FlipOff()での画面(フレームバッファ)への反映の抑制を解除し、画面の更新を再開します。 各オブジェクトの変更後や、 DrawLine()、 DrawText()を使用した後など、 サーフェイスへの描画を行っても画面(フレームバッファ)へは反映されません。
FlipOn()はサーフェイスの内容を画面(フレームバッファ)へ転送する働きをします。
FlipOff()が複数回実行されている場合は同じ数だけのFlipOn()を実行しないと解除できません。
解除に成功すると変更内容をフレームバッファへ転送し、実際に描画を更新します。 画面の更新は範囲に含まれる全てのオブジェクトの描画を実行し、その後、オブジェクト以外の、 ユーザが描画した部分の再描画を行う為に
void SGDialog::Draw(SGRect region)
がコールされます。
void DrawText | ( | SGString | text, | |
int | x, | |||
int | y, | |||
int | fontid, | |||
unsigned int | col = ((((unsigned int) 0x00 )<<24)|(((unsigned int) 0x00 )<<16)|(((unsigned int) 0x00 )<<8)|0xff) | |||
) |
文字列を描画する
ダイアログの指定した位置に文字列を描画します。
描画位置のみ指定し、範囲は指定しません。したがって、寄せやクリップの機能はありません。
text | 文字列 | |
x | X座標 | |
y | Y座標 | |
fontid | フォントのリソースID | |
col | 文字色 |
void DrawText | ( | SGString | text, | |
int | x, | |||
int | y, | |||
int | w, | |||
int | h, | |||
int | fontid, | |||
unsigned int | col = ((((unsigned int) 0x00 )<<24)|(((unsigned int) 0x00 )<<16)|(((unsigned int) 0x00 )<<8)|0xff) , |
|||
int | align = SG_ALIGN_CENTER|SG_ALIGN_MIDDLE | |||
) |
文字列を描画する
ダイアログの指定した位置に文字列を描画します。
描画位置や範囲も指定しますので、寄せやクリップの機能があります。
text | 文字列 | |
x | X座標 | |
y | Y座標 | |
w | 幅 | |
h | 高さ | |
fontid | フォントのリソースID | |
col | 文字色 | |
align | 配置 左右方向の寄せ SG_ALIGN_CENTER 中央 SG_ALIGN_LEFT 左寄せ SG_ALIGN_RIGHT 右寄せ 上下方向の寄せ SG_ALIGN_MIDDLE 中央 SG_ALIGN_TOP 上寄せ SG_ALIGN_BOTTOM 下寄せ 属性 SG_ALIGN_XSTRETCH 横方向が枠に収まらない時は幅を縮小して全部を表示します。 SG_ALIGN_YSTRETCH 縦方向が枠に収まらない時は高さを縮小して全部を表示します。 SG_ALIGN_STRETCH 横方向または縦方向が枠に収まらない時は縮小して全部を表示します。 SG_ALIGN_COMMA 3桁毎にカンマを追加し、通貨表示にします(1,234,567) SG_ALIGN_NOCLIP 枠からはみ出す場合でもクリップしないでそのまま表示します。 左右方向の寄せと上下方向の寄せをそれぞれ指定できます。 |
void GetTextSize | ( | SGString | text, | |
int & | width, | |||
int & | height, | |||
int | fontid | |||
) |
文字列を描画するのに必要な領域を取得する
fontidで指定されたフォント情報でtextを描画した場合に必要な領域(幅・高さ)を求めます。
パラメータのwidth、heightに結果が返ります。
text | 文字列 | |
width | 幅 (取得用) | |
height | 高さ(取得用) | |
fontid | フォント リソースID |
void SetTimerInterval | ( | int | time | ) |
ダイアログ タイマーインターバルを設定する。
タイマーは各ダイアログに1つずつあるダイアログタイマーと、 アプリケーションに1つだけのアプリケーション タイマーとがあります。
用途によって使い分けて下さい。
インターバル(間隔)をミリ秒単位で指定します。
関数コールと同時にタイマーがスタートします。
インターバルに0(ゼロ)を指定するとタイマーが停止します。
設定したインターバル毎に
void SGDialog::Timer(TimeVal time)
をコールします。
time | インターバル(ms単位) |
void SetSingleTimerInterval | ( | int | time | ) |
ダイアログ シングル(ワンショット)タイマーインターバルを設定する。
シングルタイマー(ワンショットタイマー)とは1回だけ発生するタイマーです。 インターバル(間隔)をミリ秒単位で指定します。
関数コールと同時にタイマーがスタートし、1回発生すると停止します。
発生前にインターバルに0(ゼロ)を指定するとタイマーが停止します。
設定したインターバル時間後に
void SGDialog::SingleTimer(TimeVal time)
をコールします。
time | インターバル(ms単位) |
void DrawObject | ( | SGRect | region | ) | [virtual] |
オブジェクトを描画する。
オブジェクトを描画する時 SGSurface::Flip() からコールされます。
regionは更新が必要な領域です。この関数がコールされた時点で、更新領域 region は クリッピングされています。
この関数は拡張できるように仮想関数(Virtual)となっていますが、標準的な使い方では この関数をオーバーライドする必要はありません。オブジェクト以外の表示の更新は SGDialog::Draw()で行います。
オブジェクトの表示方法を変更したい時や、オブジェクトを表示する前の下地処理を行いたい時は この関数をオーバーライドすることでできます。
標準状態では次のようなコードになっています。
void SGDialog::DrawObject(SGRect region) { if( mCore && GetSurface() ){ mObjects.Draw(this,region); Draw(region); } }
region | 更新領域 |
SGSurfaceを再定義しています。
void Draw | ( | SGRect | region | ) | [virtual] |
表示の更新が必要な時に呼ばれる
表示の更新が必要な時に全てのオブジェクトの表示が更新された後、コールされます。
regionは更新が必要な領域です。この関数がコールされた時点で、更新領域 region は クリッピングされています。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
表示の更新時にオリジナルな処理を追加する必要がある場合は、この関数をオーバーライドして使用します。
region | 更新領域 |
void MoveCursor | ( | int | x, | |
int | y, | |||
int | act | |||
) | [virtual] |
マウスカーソルが移動した時に呼ばれる。
マウスの座標変化やボタン操作時に発生するイベントを受けて、この関数がコールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
マウスの動作に伴う処理を記述する必要がある場合は、この関数をオーバーライドして使用します。
通常、マウスイベントは最上位のアクティブなウィンドウ(ダイアログ)にのみ通知を行います。
バックグラウンドになっても通知を受け取りたい場合は SetBGFocus を使用し、バックグラウンドでも イベントを受け取れるようにする必要があります。
マウスイベントは、ウィンドウの大きさ、範囲に関係なく通知されます。
x | マウス座標X | |
y | マウス座標Y | |
act | 動作SG_ACT_DOWN ボタンが押された SG_ACT_UP ボタンが放された SG_ACT_MOVE マウスが移動した |
void PushButton | ( | SGHandle | handleobj, | |
int | act | |||
) | [virtual] |
マウスカーソルが移動した時に呼ばれる。
マウスの座標変化やボタン操作時に発生するイベントを受けて、この関数がコールされます。
この関数は現在の最上位ウィンドウと、それ以外のダイアログでバックグラウンドでも イベントを受け取るよう設定されたダイアログに通知します。
x | マウス座標X | |
y | マウス座標Y | |
act | 動作SG_ACT_DOWN ボタンが押された SG_ACT_UP ボタンが放された SG_ACT_MOVE マウスが移動した |
SGDialog::PushButton() は、「押した」「放した」「確定した」「リピートした」と 全てのイベントでコールされます。 それに対して
「押した」時は SGDialog::DownButton()
「放した」時は SGDialog::UpButton()
「確定した」「リピートした」時は SGDialog::ClickButton()
がコールされます。、必要、好みに応じて使い分けて下さい。
オブジェクトのハンドル handleobj は
SGObject* obj = GetObjectFromHandle(handleobj);
でオブジェクト クラスに変換できます。
メッセージ発行のタイミング
handleobj | イベントを発行したオブジェクトのハンドル | |
act | ボタンの動作SG_ACT_DOWN 押された SG_ACT_UP 放された SG_ACT_CLICK 確定した SG_ACT_REPEAT リピートした |
void ClickButton | ( | SGHandle | handleobj, | |
int | act | |||
) | [virtual] |
ボタンオブジェクトまたはキーボードオブジェクトがクリックした時に呼ばれる
ボタンオブジェクトまたはキーボードオブジェクトがクリック(確定)した時に発生するイベントを受けて、 この関数がコールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
ボタンクリック(確定)の動作に伴う処理を記述する必要がある場合は、この関数をオーバーライドして使用します。
SGDialog::PushButton() は、「押した」「放した」「確定した」「リピートした」と 全てのイベントでコールされます。 それに対して
「押した」時は SGDialog::DownButton()
「放した」時は SGDialog::UpButton()
「確定した」「リピートした」時は SGDialog::ClickButton()
がコールされます。、必要、好みに応じて使い分けて下さい。
オブジェクトのハンドル handleobj は
SGObject* obj = GetObjectFromHandle(handleobj);
でオブジェクト クラスに変換できます。 クリックはボタンを押して放した時発生しますが、押しっ放しでも300ms経過すると発生します。
メッセージ発行のタイミング
handleobj | イベントを発行したオブジェクトのハンドル | |
act | ボタンの動作SG_ACT_CLICK 確定した SG_ACT_REPEAT リピートした |
void OrgDialog::ClickButton(SGHandle handleobj,int act) { SGObject* obj = GetObjectFromHandle(handleobj); if( obj ){ int objid = obj->GetId(); switch(objid){ case BTN_CLOSE: Close(); break; case BTN_XXXX: . . break; } } }
void DownButton | ( | SGHandle | handleobj, | |
int | act | |||
) | [virtual] |
ボタンオブジェクトまたはキーボードオブジェクトが押された時に呼ばれる
ボタンオブジェクトまたはキーボードオブジェクトが押された時に発生するイベントを受けて、 この関数がコールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
ボタン押下の動作に伴う処理を記述する必要がある場合は、この関数をオーバーライドして使用します。
SGDialog::PushButton() は、「押した」「放した」「確定した」「リピートした」と 全てのイベントでコールされます。 それに対して
「押した」時は SGDialog::DownButton()
「放した」時は SGDialog::UpButton()
「確定した」「リピートした」時は SGDialog::ClickButton()
がコールされます。、必要、好みに応じて使い分けて下さい。
オブジェクトのハンドル handleobj は
SGObject* obj = GetObjectFromHandle(handleobj);
でオブジェクト クラスに変換できます。
メッセージ発行のタイミング
handleobj | イベントを発行したオブジェクトのハンドル | |
act | ボタンの動作(必ず SG_ACT_DOWN です) |
void UpButton | ( | SGHandle | handleobj, | |
int | act | |||
) | [virtual] |
ボタンオブジェクトまたはキーボードオブジェクトが放された時に呼ばれる
ボタンオブジェクトまたはキーボードオブジェクトが放された時に発生するイベントを受けて、 この関数がコールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
ボタン解放の動作に伴う処理を記述する必要がある場合は、この関数をオーバーライドして使用します。
SGDialog::PushButton() は、「押した」「放した」「確定した」「リピートした」と 全てのイベントでコールされます。 それに対して
「押した」時は SGDialog::DownButton()
「放した」時は SGDialog::UpButton()
「確定した」「リピートした」時は SGDialog::ClickButton()
がコールされます。、必要、好みに応じて使い分けて下さい。
オブジェクトのハンドル handleobj は
SGObject* obj = GetObjectFromHandle(handleobj);
でオブジェクト クラスに変換できます。
メッセージ発行のタイミング
handleobj | イベントを発行したオブジェクトのハンドル | |
act | ボタンの動作(必ず SG_ACT_UP です) |
void PreInitial | ( | ) | [virtual] |
ダイアログが開く直前の初期化タイミングで呼ばれる
ダイアログが開く前のタイミングでの処理を記述します。
推奨しているやり方ではコンストラクタ内でオブジェクトの追加を行っているので、 オブジェクトにアクセスすることは出来ますが、ダイアログのサーフェースがまだ生成されて いませんので Flip()、もしくは Flip()を使用する Update()などの関数は使用できません。
オブジェクトの初期表示状態(属性、テキスト、色、位置など)の設定に適しています。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
このタイミングで初期化などを行う場合は、この関数をオーバーライドして使用します。
void PostInitial | ( | SGHandle | handledlg, | |
int | id | |||
) | [virtual] |
ダイアログが開いた直後の初期化タイミングで呼ばれる
ダイアログが開いた後のタイミングで行う処理を記述します。(主に初期化目的)
この関数は他のダイアログがオープンする時も呼ばれますので注意して下さい。
id はオープンしたウィンドウのIDがセットされているので、どのダイアログがオープンしたか判断できます。
自分の初期化を行う時など、基本的にはidを確認してから処理を行うようにして下さい
// id の確認 if( id == GetId() ){ // 初期化処理 }
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
このタイミングで初期化などを行う場合は、この関数をオーバーライドして使用します。
他のダイアログのオープンによって既に開いているダイアログの挙動が変化する場合などに適しています。
handledlg | オープンしたダイアログのハンドル | |
id | オープンしたダイアログのID |
void Sound | ( | int | type, | |
int | val1, | |||
int | val2 | |||
) | [virtual] |
ビープ音を鳴らすタイミングで呼ばれる。
「ボタンが押された」など音を鳴らすタイミングで呼ばれます。
このライブラリには音を鳴らす機能はありません。音を鳴らすタイミングを通知するものです。
typeは音の種類を決定する為にアクションの種類がセットされます。
val1、val12、は type によって変化します。
音を鳴らす場合は class SGSound を継承してオリジナルクラスを作成し、そのクラス中に音に関する 部分をコーディングします。
オリジナルサウンドクラスは
void SGCore::SetSoundClass(SGSound* sound)
で登録することにより、ライブラリよりコールされるようになります。
この関数は仮想関数(virtual)です。
標準では SGCore::SetSoundClass()で登録したクラスの関数をコールします。
アプリケーション内で全て統一の音を出す場合は、この関数を拡張する必要はありません。 特定のダイアログの特定の種類の音だけに処理を追加、変更する必要があるような場合は、 この関数をオーバーライドします。
type | 種類SG_SOUND_BUTTON: ボタン押下でクリック発生時 val1:act アクション val2:handle オブジェクトのハンドル SG_SOUND_KEYBOARD: キーボード押下時 val1:act アクション val2:handle オブジェクトのハンドル 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 | type参照 | |
val2 | type参照 |
void Timer | ( | TimeVal | time | ) | [virtual] |
ダイアログ タイマー イベントが発生した時呼ばれる
SGDialog::SetTimerInterval()で設定したインターバルで発生するタイマーイベントを受けて コールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
周期的な処理を行う場合は、この関数をオーバーライドして使用します。
TimeVal { long tv_sec; // 秒 long tv_usec; // マイクロ秒 };
time | 現在の時間 |
void SingleTimer | ( | TimeVal | time | ) | [virtual] |
ダイアログ シングル タイマーのイベントが発生した時呼ばれる
SGDialog::SetSingleTimerInterval()で設定したインターバルで発生するタイマーイベントを受けて コールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
一定時間後に単発処理を行う場合は、この関数をオーバーライドして使用します。
TimeVal { long tv_sec; // 秒 long tv_usec; // マイクロ秒 };
time | 現在の時間 |
void ResetTimer | ( | ) | [virtual] |
ダイアログ タイマーをリセット(停止)する。
ダイアログ タイマーのインターバル時間をリセットしてタイマーを停止させます。
void ReceiveUserEvent | ( | int | param, | |
void * | data, | |||
SGHandle | handledlg, | |||
SGHandle | handleobj | |||
) | [virtual] |
ユーザイベントが発行された時に呼ばれる
SGCore::PostEventUser()によって発行さるユーザイベントを受けて、この関数がコールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
ユーザ定義のイベントを使用する場合は、この関数をオーバーライドして使用します。
この関数はユーザイベントの受信側です。
ユーザイベントを発行する(ダイアログにメッセージを送る)時は
SGApplication派生クラス内からは PostEventUser()、
ダイアログからは GetCore()->PostEventUser()
のように使います。
param | SGCore::PostEventUser()によって与えられたparam | |
data | SGCore::PostEventUser()によって与えられたdata | |
handledlg | SGCore::PostEventUser()によって与えられたhandledlg | |
handleobj | SGCore::PostEventUser()によって与えられたhandleobj |
void ChangePalette | ( | SGPalette * | pal | ) | [virtual] |
パレットが変更された時に呼ばれる
メインのパレット(PrimaryPalette)が変更された時にコールされます。
ピクチャー オブジェクト SGPictureObject::Draw() はメインのパレットを変更しますので、 ピクチャー オブジェクトが存在する場合、再描画の際にこの関数がコールされます。
この関数は仮想関数(virtual)です。
標準では SGSurface::SetPalette() をコールし、パレットを変更します。
パレット変更に伴う処理を追加、変更する必要がある場合は、この関数をオーバーライドして使用します。
pal | 新しく登録されたパレット |
void Wheel | ( | int | step, | |
int | over, | |||
int | top | |||
) | [virtual] |
マウスのホイールが回転した時に呼ばれる
マウスのホイールが回転した時に発生するイベントを受けて、この関数がコールされます。
この関数は仮想関数(virtual)です。
ホイール回転に伴う処理を記述する必要がある場合は、この関数をオーバーライドして使用します。
デフォルトではフォーカスを移動する様になっています。
※全てのダイアログがコールされますので新しいダイアログが開かれた後も呼ばれます。
over、topなどの値をチェックしてフィルタする必要があります。
拡張する場合は次の標準状態のコードを参考にして下さい。
void SGDialog::Wheel(int step,int over,int top) { if( mCore && (top || (over && GetBGFocus())) ){ mCore->SetFocusEnable(TRUE); if( step > 0 ){ // 正転 FocusNext(); } else{ // 反転 FocusPrevious(); } } }
step | ホイール移動量(正負で回転方向を判断します) | |
over | マウスが上に乗っているダイアログはTRUE(1) ※バックグラウンドであってもTRUE(1)になります | |
top | 一番上のダイアログはTRUE(1) |
void Closed | ( | SGHandle | handledlg, | |
int | id, | |||
int | param | |||
) | [virtual] |
ダイアログが閉じた時に呼ばれる
Close(int param) でダイアログが閉じられる直前に呼ばれます。
この関数は他のダイアログがクローズする時も呼ばれますので注意して下さい。
id はクローズしたウィンドウのIDがセットされているので、 どのダイアログがクローズしたか判断できます。
自分の終了処理、他の終了に連動した処理など、idでどのダイアログがクローズしたのか 確認してから処理を行って下さい
// id の確認 if( id == GetId() ){ // 自身のクローズ } else if( id == DLG_XXX ){ // 他のダイアログのクローズ }
int param には Close(param) で渡されたパラメータがセットされています。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
クローズのタイミングで何か処理を行う場合は、この関数をオーバーライドして使用します。
他のダイアログのクロースによって既に開いているダイアログの挙動を変化させたい時にも使用します。
handledlg | クローズしたダイアログのハンドル | |
id | クローズしたダイアログのID | |
param | Close(int param)で渡された値 |
void Inactivate | ( | ) | [virtual] |
アクティブでなくなった時よばれる。
他のウィンドウが開かれるなど、自分がトップウィンドウでなくなった時、ダイアログはアクティブで なくなります。アクティブだったダイアログがアクティブでなくなった時コールされます。 この関数は仮想関数(Virtual)です。
アクティブでなくなった時の処理を行う場合は、この関数をオーバーライドして使用します。
拡張しない場合標準ではキャレットを消す関数がコールされます。
void Activate | ( | ) | [virtual] |
アクティブになった時よばれる。
他のダイアログが閉じた時、 SGDialog::ToTop()をコールした時、オープンした時など、 トップウィンドウになった時、ダイアログはアクティブになります。アクティブでないダイアログが アクティブになった時コールされます。
この関数は仮想関数(Virtual)です。
アクティブになった時の処理を行う場合は、この関数をオーバーライドして使用します。
拡張しない場合標準ではキャレットを表示する関数
SGDialog::SetCaretObject(SG_CARET_AUTO)
がコールされます。
const char * GetIdName | ( | int | id = -1 |
) | [virtual] |
ダイアログIDの名前を取得する。
ダイアログIDの名前を取得します。
id | ID(-1の時はダイアログ名になります) |
SGObject * AddButton | ( | int | id, | |
SGString | text, | |||
int | x, | |||
int | y, | |||
int | w, | |||
int | imageid, | |||
int | attr = SG_ATTR_NORMAL , |
|||
int | fontid = 0 , |
|||
int | align = SG_ALIGN_CENTER , |
|||
int | marginx = 0 , |
|||
int | marginy = 0 | |||
) |
ボタンオブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddButton(this, id, text, x, y, w, imageid, attr);
を使用して下さい。
SGObject * AddEditbox | ( | int | id, | |
SGString | text, | |||
int | x, | |||
int | y, | |||
int | w, | |||
int | imageid, | |||
int | attr = SG_ATTR_NORMAL , |
|||
int | fontid = 0 , |
|||
int | align = SG_ALIGN_CENTER , |
|||
int | marginx = 0 , |
|||
int | marginy = 0 | |||
) |
エディットボックスオブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddEditbox(this, id, text, x, y, w, imageid, attr);
を使用して下さい。
SGObject * AddFrame | ( | int | id, | |
SGString | text, | |||
int | x, | |||
int | y, | |||
int | w, | |||
int | h, | |||
int | imageid, | |||
int | attr = SG_ATTR_NORMAL , |
|||
int | fontid = 0 , |
|||
int | align = SG_ALIGN_CENTER , |
|||
int | marginx = 0 , |
|||
int | marginy = 0 | |||
) |
フレームオブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddFrame(this, id, text, x, y, w, h, imageid, attr);
を使用して下さい。
SGObject * AddPicture | ( | int | id, | |
int | x, | |||
int | y, | |||
int | w, | |||
int | h, | |||
const char * | file, | |||
int | attr = SG_ATTR_NORMAL , |
|||
int | shared = 1 | |||
) |
ピクチャー オブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddPicture(this, id, x, y, w, h, file, attr, shared);
を使用して下さい。
SGObject * AddIcon | ( | int | id, | |
int | x, | |||
int | y, | |||
int | w, | |||
int | h, | |||
const char * | file, | |||
int | attr = SG_ATTR_NORMAL , |
|||
int | shared = 1 | |||
) |
アイコン オブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddIcon(this, id, x, y, w, h, file, attr, shared);
を使用して下さい。
SGObject * AddMovie | ( | int | id, | |
int | x, | |||
int | y, | |||
const char * | file, | |||
int | attr = SG_ATTR_NORMAL , |
|||
int | loop = TRUE , |
|||
int | play = FALSE | |||
) |
ムービー オブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddMovie(this, id, x, y, w, h, file, attr, loop, play);
を使用して下さい。
SGObject * AddCanvas | ( | int | id, | |
int | x, | |||
int | y, | |||
int | w, | |||
int | h, | |||
int | attr = SG_ATTR_NORMAL | |||
) |
キャンバス オブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddCanvas(this, id, x, y, w, h, attr);
を使用して下さい。
SGObject * AddText | ( | int | id, | |
SGString | text, | |||
int | x, | |||
int | y, | |||
int | w, | |||
int | h, | |||
int | fontid, | |||
int | attr = SG_ATTR_NORMAL , |
|||
unsigned int | col = ((((unsigned int) 0x00 )<<24)|(((unsigned int) 0x00 )<<16)|(((unsigned int) 0x00 )<<8)|0xff) , |
|||
unsigned int | colsub = ((((unsigned int) 0x78 )<<24)|(((unsigned int) 0x78 )<<16)|(((unsigned int) 0x78 )<<8)|0xff) , |
|||
int | align = SG_ALIGN_CENTER , |
|||
int | marginx = 0 , |
|||
int | marginy = 0 | |||
) |
テキスト オブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddText(this, id, text, x, y, w, h, fontid, attr, col, align, marginx, marginy);
を使用して下さい。
SGObject * AddKeyboard | ( | int | id | ) |
キーボードオブジェクトを生成し追加する
互換を保つために残された関数です。Group()関数を使用し
Group()->AddKeyboard(this,id);
を使用して下さい。
void PostEventClickObject | ( | int | id | ) |
オブジェクトをクリックする。
ボタンなどのオブジェクトをクリックした時のイベントを発行します。
注意:オブジェクトの中心をクリックしたようなイベントを発行する為、 オブジェクトの形状によってはクリックされない場合があります。
id | オブジェクトのID |
int DialogReference | ( | ) |
ダイアログの参照を開始することを宣言する
これからダイアログクラスのメンバなどの参照を開始することを宣言します。
参照を終える時、必ず DialogUnReference() で参照の終わりを宣言する必要があります。
int DialogUnReference | ( | ) |