PlusGアプリケーションの基本クラス. [詳細]
#include <sgapplication.h>
Public メソッド | |
SGApplication () | |
コンストラクタ | |
virtual | ~SGApplication () |
デストラクタ | |
SGString | GetVersion () |
ライブラリのバージョン文字列を取得する | |
virtual void | SetImage () |
リソースを登録する | |
virtual const char * | GetIdName (int id=-1) |
リソース名を取得する。 | |
virtual void | ReceiveEvent (int id, int fd) |
外部イベントの受信処理 | |
virtual void | ApplicationTimer (TimeVal time) |
アプリケーション タイマー イベントが発生した時呼ばれる | |
virtual void | ApplicationSingleTimer (TimeVal time, unsigned int id) |
アプリケーション シングル タイマーのイベントが発生した時呼ばれる | |
virtual int | DrawCaret (SGSurface *surface, int type, int width, int height) |
キャレットの形状を描画する | |
int | AddEventFd (int fd, int id=-1) |
外部イベント受信処理で待ち受けする fd(ファイルディスクリプタ)を登録します。 | |
int | RemoveEventFd (int id) |
外部イベント受信処理で待ち受けに登録した fd(ファイルディスクリプタ)を解除する。 | |
void | SetApplicationTimerInterval (unsigned long interval) |
アプリケーション タイマーインターバルを設定する。 | |
void | SetApplicationSingleTimerInterval (unsigned long interval, unsigned int id=200) |
アプリケーション シングル(ワンショット)タイマーインターバルを設定する。 | |
int | CreateThread () |
スレッドを作成する | |
void | CancelThread () |
スレッドを終了します | |
SGCore * | GetCore () |
SGCoreオブジェクトを取得する. | |
int | Initialize (int argc, char **argv, int mode=SG_COLMODE_DIRECT, unsigned int *pal_data=NULL) |
アプリケーションを初期化する。 | |
void | EnableMouseMoveEvent (int enable) |
マウスの移動イベントを受け取るかどうかを設定する | |
void | SetDateTime (int year, int mon, int day, int hour=-1, int min=-1, int sec=-1) |
時計を設定する | |
void | ResetTimer () |
タイマー関連を初期化する。 | |
void | Release () |
ライブラリの終了処理を行います。 | |
int | GetEvent (_SGEvent *event) |
イベントを取得する。 | |
int | CheckEvent (_SGEvent *event) |
イベント処理関数 | |
void | PostEventUser (int param=0, void *data=NULL, SGHandle handledlg=0, SGHandle handleobj=0) |
ユーザイベントを発行する。 | |
void | PostEventCursor (int x, int y, int act) |
マウスが発行するイベントと同じイベントを発行する。 | |
void | PostEventWheel (int val) |
マウスホイールイベントを発行する。 | |
void | PostEventButton (int act, int click=FALSE) |
ボタンイベントを発行する。 | |
void | PostEventKeyboard (int act, const char *symbol_name) |
キーボードイベントを発行する。 | |
int | SetFont (int id, const char *file, int size, int effect=FONT_EFFECT_NORMAL, int bold=TRUE, int boldeffect=TRUE) |
アプリケーションで使用するフォントを登録する。 | |
int | SetImageButton (int id, int attr, int fontid, int margin, int align, unsigned int col, unsigned int colsub, const char *imgfile) |
ボタン用のリソースを登録する。 | |
int | SetImageEditbox (int id, int attr, int fontid, int margin, int align, unsigned int col, unsigned int colsub, const char *imgfile) |
エディット ボックス用のリソースを登録する。 | |
int | SetImageFrame (int id, int attr, int fontid, int margin, int align, unsigned int col, unsigned int colsub, const char *imgfile) |
フレーム用のリソースを登録する。 |
PlusGアプリケーションの基本クラス.
リソースエディタを使用してアプリケーションを作成した場合、自動的にこのクラスが継承されます。
SGApplication | ( | ) |
コンストラクタ
~SGApplication | ( | ) | [virtual] |
デストラクタ
SGString GetVersion | ( | ) |
ライブラリのバージョン文字列を取得する
ライブラリのバージョン文字列を取得します。
void SetImage | ( | ) | [virtual] |
リソースを登録する
アプリケーションで使用するリソースイメージを登録するタイミングでライブラリがコールします。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
この関数をオーバーライドし、その中でリソースイメージの登録を行って下さい。
SetFont() 使用する書体とサイズを登録します。 SetImageButton() ボタン用のイメージファイルと色、サイズなどの情報を登録します。 SetImageEditbox() エディットボックス用のイメージファイルと色、サイズなどの情報を登録します。 SetImageFrame() フレーム用のイメージファイルと色、サイズなどの情報を登録します。
const char * GetIdName | ( | int | id = -1 |
) | [virtual] |
リソース名を取得する。
アプリケーションで使用するリソースIDを名前(文字列)に変換します。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
この関数をオーバーライドし、その中でリソースIDを文字列として返す部分を追加してください。
追加する際、引数idが-1の時はアプリケーション名が返るようにして下さい。
それ以外の場合は対応するリソース名を返して下さい。
id | リソースID(-1の時はアプリケーション名になります) |
void ReceiveEvent | ( | int | id, | |
int | fd | |||
) | [virtual] |
外部イベントの受信処理
AddEventFd() 関数によって登録されたファイルディスクリプタ(fd)にデータが到達したタイミングで ライブラリがコールします。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
ファイルディスクリプタ(fd)へのデータ到着に関する処理を行う場合は、 この関数をオーバーライドして下さい。
id | AddEventFdによって登録した際に関連付けられた任意のID | |
fd | データが到達したファイルディスクリプタ(登録したもの) |
void ApplicationTimer | ( | TimeVal | time | ) | [virtual] |
アプリケーション タイマー イベントが発生した時呼ばれる
SGApplication::SetApplicationTimerInterval()で設定したインターバルで発生する タイマーイベントを受けてコールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
周期的な処理を行う場合は、この関数をオーバーライドして使用します。
TimeVal { long tv_sec; // 秒 long tv_usec; // マイクロ秒 };
time | 現在の時間 |
void ApplicationSingleTimer | ( | TimeVal | time, | |
unsigned int | id | |||
) | [virtual] |
アプリケーション シングル タイマーのイベントが発生した時呼ばれる
SGApplication::SetApplicationSingleTimerInterval()で設定した インターバルで発生するタイマーイベントを受けてコールされます。
この関数は拡張専用でブランク(何もしない)仮想関数(Virtual)です。
一定時間後に単発処理を行う場合は、この関数をオーバーライドして使用します。
TimeVal { long tv_sec; // 秒 long tv_usec; // マイクロ秒 };
time | 現在の時間 |
int DrawCaret | ( | SGSurface * | surface, | |
int | type, | |||
int | width, | |||
int | height | |||
) | [virtual] |
キャレットの形状を描画する
標準キャレットの色や形状を変更したい場合に、この関数をオーバーライドします。
与えられたサーフェース surface に対して、幅 width ×高さ height の範囲で描画して下さい。
標準キャレット関数での描画の必要が無い場合は関数の戻り値を0以外にして下さい。
標準キャレットの描画処理が抑制されます。
surface | サーフェース | |
type | 種類SG_CARET_UNDERLINE アンダーライン(文字の下に横線) SG_CARET_IBEAM アイビーム(文字の左側に縦線) SG_CARET_BOX ボックス(文字を囲む四角輪郭) | |
width | 幅 | |
height | 高さ |
0 | ライブラリ内部でキャレットを描画します。 | |
0以外 | この関数を使ってユーザがキャレットを描画した場合は0以外を返します。 |
int AddEventFd | ( | int | fd, | |
int | id = -1 | |||
) |
外部イベント受信処理で待ち受けする fd(ファイルディスクリプタ)を登録します。
ライブラリによって待ち受けを行う(selectに待ち受けをさせる)fd の登録を行います。
ここで登録した fd にデータが到達すると関連付けられた id とともに ReceiveEvent 関数を通して通知します。
id が ReceiveEvent() の第1パラメータとして、
fd が ReceiveEvent() の第2パラメータとして返されます。
複数の fd を登録する場合は、IDをユニークになる必要があります。
IDは省略可能です。省略すると自動でユニークな id が振られます。
fd | 待ち受けを行うファイルディスクリプタ | |
id | ファイルディスクリプタを判断するために任意の id を登録します。 |
int RemoveEventFd | ( | int | id | ) |
外部イベント受信処理で待ち受けに登録した fd(ファイルディスクリプタ)を解除する。
外部イベント受信処理で待ち受けに登録した fd(ファイルディスクリプタ)を解除します。
クローズした fd は登録を解除する必要があります。
id | 解除する fd を、登録関数 AddEventFd() で指定した id を使って指定します。 |
TRUE(1) | 解除成功 | |
FALSE(0) | 解除失敗 |
void SetApplicationTimerInterval | ( | unsigned long | interval | ) |
アプリケーション タイマーインターバルを設定する。
タイマーは各ダイアログに1つずつあるダイアログタイマーと、 アプリケーションに1つだけのアプリケーション タイマーとがあります。
用途によって使い分けて下さい。
インターバル(間隔)をミリ秒単位で指定します。
関数コールと同時にタイマーがスタートします。
インターバルに0(ゼロ)を指定するとタイマーが停止します。
設定したインターバル毎に
void SGApplication::ApplicationTimer(TimeVal time)
をコールします。
interval | インターバル(ms単位) |
void SetApplicationSingleTimerInterval | ( | unsigned long | interval, | |
unsigned int | id = 200 | |||
) |
アプリケーション シングル(ワンショット)タイマーインターバルを設定する。
シングルタイマー(ワンショットタイマー)とは1回だけ発生するタイマーです。 インターバル(間隔)をミリ秒単位で指定します。
関数コールと同時にタイマーがスタートし、1回発生すると停止します。
発生前にインターバルに0(ゼロ)を指定するとタイマーが停止します。
設定したインターバル時間後に
void SGApplication::ApplicationSingleTimer(TimeVal time)
をコールします。
interval | インターバル(ms単位) |
int CreateThread | ( | ) |
スレッドを作成する
この関数はスレッドを1つクリエイトします。
このスレッドはタイマー機能と外部イベント処理(select関数を使った待ち受け)を行います。
アプリケーション起動時の初期化関数で Initialize() と CreateThread() の2つの関数を コールすることが必須です。
CreateThread()関数が失敗した時はアプリケーションを継続することはできません。
アプリケーションを終了させてください。
その初期関数の中では必要に応じて
SGApplication::AddEventFd(int fd,int id)
SGCore::SetSoundClass(SGSound* sound)
などもコールします。
TRUE(1) | 成功 | |
FALSE(0) | 失敗 |
void CancelThread | ( | ) |
スレッドを終了します
アプリケーションの終了時にコールします。 起動時に CreateThread() によって作成されたスレッドを停止させます。
SGCore * GetCore | ( | ) |
int Initialize | ( | int | argc, | |
char ** | argv, | |||
int | mode = SG_COLMODE_DIRECT , |
|||
unsigned int * | pal_data = NULL | |||
) |
アプリケーションを初期化する。
アプリケーションの初期化を行います。 アプリケーション起動時の初期化関数で Initialize() と CreateThread() の2つの関数を コールすることが必須です。
modeはこのアプリケーションを実行するH/W環境によって決定します。
8Bit/Pixcelのパレットモードで実行する場合は SG_COLMODE_PALETTE を
それ以外の16、24、32/Pixcelの場合は SG_COLMODE_DIRECT を指定します。
pal_data は mode が SG_COLMODE_PALETTE の時のみパレットデータを登録する為に使用しますが、 パレットの登録方法は、ここで pal_data を指定する方法と、パレットデータを含む画像ファイルから 自動的に抽出する方法とがあります。
pal_dataを指定する場合は、unsigned int型256個の配列で指定します。
unsigned int palette_data[256] = { // bb gg rr 0x00000000, 0x5877b100, . . 0x434c5c00, };
argc | 引数の個数 | |
argv | 引数 | |
mode | モードSG_COLMODE_DIRECT パレットを使わない(デフォルト) SG_COLMODE_PALETTE パレットを使う | |
pal_data | modeでSG_COLMODE_PALETTEを指定した場合はパレットデータを指定します。 |
TRUE | 成功 | |
FALSE | 失敗 |
void EnableMouseMoveEvent | ( | int | enable | ) |
マウスの移動イベントを受け取るかどうかを設定する
押し下げていない状態でのマウスの移動イベントを受け取るかどうかを設定します。
この設定に関わらず、押し下げ状態での移動(ドラッグ)は常に受け取ります。
初期状態では「受け取らない(FALSE)」になっています。
タッチパネルを使用する場合は無効に設定することをお勧めします。
タッチパネルの特性上、タッチ時の瞬間プレス状態になるまでの微小な時間に不確定な移動(異常な座標)が検知されることがあります。
enable | 有効/無効TRUE 有効(受け取る) FALSE 無効(受け取らない) |
void SetDateTime | ( | int | year, | |
int | mon, | |||
int | day, | |||
int | hour = -1 , |
|||
int | min = -1 , |
|||
int | sec = -1 | |||
) |
時計を設定する
時計を設定します。
時計はこの関数を使用して設定して下さい。
この関数を使用しないでシステム時計を変更する必要がある場合は変更後に必ず
SGApplication::ResetTimer(); をコールしてください。
year | 年 | |
mon | 月 | |
day | 日 | |
hour | 時 | |
min | 分 | |
sec | 秒 |
void ResetTimer | ( | ) |
タイマー関連を初期化する。
タイマー関連の初期化を行います。
時計を変更した時は必ずこの関数をコールする必要があります。
SGApplication::SetDateTime() は内部でこの関数をコールしていますので、リセットする 必要はありません。
それ以外の方法で時計を変更した場合にコールして下さい。
void Release | ( | ) |
ライブラリの終了処理を行います。
アプリケーションの終了時にコールします。 ライブラリが使用したメモリ(リソース)を全て解放します。
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 | イベントが取得出来ませんでした。 |
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 PostEventUser | ( | int | param = 0 , |
|
void * | data = NULL , |
|||
SGHandle | handledlg = 0 , |
|||
SGHandle | handleobj = 0 | |||
) |
ユーザイベントを発行する。
ユーザイベントを発行します。
ユーザイベントは全てのダイアログに通知されます。
外部からの信号をダイアログに通知するなど、アプリケーションからダイアログへ メッセージを伝える時に使用します。
この関数は内部で SGCore::PostEventUser() を呼び出しています。 ダイアログからダイアログへメッセージを伝える場合は SGCore::PostEventUser() を 直接呼び出すことで可能です。
ダイアログ側では、ReceiveUserEvent関数でイベントを受け取ります。
合わせて受信側処理 SGDialog::ReceiveUserEvent() もコーディングして下さい。
param | int型のパラメータ (受信時の識別IDとして利用すると便利です) | |
data | void型のデータポインタ | |
handledlg | ダイアログオブジェクト(ダイアログを指定すると受信側で判別が容易になります) | |
handleobj | SGObjectの派生オブジェクト(オブジェクトを指定すると受信側で判別が容易になります) |
void PostEventCursor | ( | int | x, | |
int | y, | |||
int | act | |||
) |
マウスが発行するイベントと同じイベントを発行する。
タッチパネルなど外部信号を受けてマウスを模擬する場合や、プログラムによって マウスと同じ動作をさせる場合に使用します。 マウスと同様にポインタの移動とボタン押下などのアクション動作が可能です。
void PostEventWheel | ( | int | val | ) |
マウスホイールイベントを発行する。
マウスホイールイベントを発行します。
val | 回転量と回転方向 正負で方向を表します。 |
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 クリックは押して放した時、押しっ放しでも300ms経過すると発生します。 |
void PostEventKeyboard | ( | int | act, | |
const char * | symbol_name | |||
) |
キーボードイベントを発行する。
キーボード イベントを発行します。
act | アクションタイプSG_ACT_DOWN (0) 押下 SG_ACT_UP (1) 解放 | |
symbol_name | キーの名前 |
int SetFont | ( | int | id, | |
const char * | file, | |||
int | size, | |||
int | effect = FONT_EFFECT_NORMAL , |
|||
int | bold = TRUE , |
|||
int | boldeffect = TRUE | |||
) |
アプリケーションで使用するフォントを登録する。
アプリケーションで使用するフォントを登録します。
オブジェクトやダイアログで文字を表示する為には予め登録しておく必要があります。
フォントは file ファイル名で指定します。ファイルは アプリケーション本体のファイルが 保存されているフォルダ直下の fonts フォルダの中に保存しておきます。
id | リソース認識用のID(任意のユニークな数値) | |
file | フォントファイル名 | |
size | 表示サイズ(dot) | |
effect | 装飾効果の設定
FONT_EFFECT_NORMAL(0) 効果なし FONT_EFFECT_SHADOW(1) 影(文字と影の2色使用) FONT_EFFECT_OUTLINE(2) 輪郭(塗りと輪郭2色使用) FONT_EFFECT_SHADOW_OUTLINE(3) 輪郭+影(塗りと輪郭+影2色使用) FONT_EFFECT_STROKE(4) 袋文字(輪郭のみ、塗りつぶしなし) | |
bold | 書体属性のボールドのON/OFFをTRUE/FALSEで設定(省略時ON) | |
boldeffect | 効果のボールドのON/OFFをTRUE/FALSEで設定(省略時ON) |
TRUE | 成功 | |
FALSE | 失敗 |
int SetImageButton | ( | int | id, | |
int | attr, | |||
int | fontid, | |||
int | margin, | |||
int | align, | |||
unsigned int | col, | |||
unsigned int | colsub, | |||
const char * | filename | |||
) |
ボタン用のリソースを登録する。
ボタン用のリソースの登録を行います。
登録はアプリケーション起動時に全てのリソースを登録します。
この関数はリソース情報の登録のみを行います。
登録したリソースは、ダイアログ生成時に SGGroupObject::AddButton() をコールすることで 実際に使用することが出来るようになります。
SetImageButton(IBTN_STD,SG_ATTR_NORMAL ,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK ,SG_COL_GRAY,"Btn50N.png"); SetImageButton(IBTN_STD,SG_ATTR_DISABLE,FNT24,0,SG_ALIGN_CENTER,SG_COL_DISABLE,SG_COL_GRAY,"Btn50D.png"); SetImageButton(IBTN_STD,SG_ATTR_ACTIVE ,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK ,SG_COL_GRAY,"Btn50A.png"); SetImageButton(IBTN_STD,SG_ATTR_FOCUS ,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK ,SG_COL_GRAY,"Btn50F.png"); SetImageButton(IBTN_STD,SG_ATTR_DOWN ,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK ,SG_COL_GRAY,"Btn50P.png"); SetImageButton(IBTN_STD,SG_ATTR_ACTDOWN,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK ,SG_COL_GRAY,"Btn50D.png");
上記サンプルのように1つのリソース登録に対して関数を6回コールして使用します。
※SG_ATTR_NORMAL以外は省略可能です。
フォーカスは現在のカレントに指定されているオブジェクトを示すもので、 6つの属性のうち SG_ATTR_FOCUS だけは他のものの上に重ねて使用されます。
よって、フォーカスに指定される画像は、ほとんどが透明で枠だけやポインタだけが存在するような デザインになります。
この時、画像ファイルはリソースフォルダにあるものとします。
初期リソースフォルダは "resources/" です。
void SGGraphics::SetImageFolder(const char* folder)
で変更することが出来ます。
id | リソース認識用の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) アクティブでかつ押下状態用 | |
fontid | フォント リソースID | |
margin | マージン | |
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 枠からはみ出す場合でもクリップしないでそのまま表示します。 左右方向の寄せと上下方向の寄せをそれぞれ指定できます。 | |
col | テキスト表示色 | |
filename | リソース画像のファイル名 |
TRUE | 成功 | |
FALSE | 失敗 |
int SetImageEditbox | ( | int | id, | |
int | attr, | |||
int | fontid, | |||
int | margin, | |||
int | align, | |||
unsigned int | col, | |||
unsigned int | colsub, | |||
const char * | filename | |||
) |
エディット ボックス用のリソースを登録する。
エディット ボックス用のリソースの登録を行います。 登録はアプリケーション起動時に全てのリソースを登録します。
この関数はリソース情報の登録のみを行います。
登録したリソースは、ダイアログ生成時に SGGroupObject::AddEditbox() をコールすることで 実際に使用することが出来るようになります。
SetImageEditbox(IEDT_STD,SG_ATTR_NORMAL ,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK ,SG_COL_GRAY,"Edt50N.png"); SetImageEditbox(IEDT_STD,SG_ATTR_DISABLE,FNT24,0,SG_ALIGN_CENTER,SG_COL_DISABLE,SG_COL_GRAY,"Edt50D.png"); SetImageEditbox(IEDT_STD,SG_ATTR_ACTIVE ,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK ,SG_COL_GRAY,"Edt50A.png"); SetImageEditbox(IEDT_STD,SG_ATTR_FOCUS ,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK ,SG_COL_GRAY,"Edt50F.png");
上記サンプルのように1つのリソース登録に対して関数を4回コールして使用します。
※SG_ATTR_NORMAL以外は省略可能です。
フォーカスは現在のカレントに指定されているオブジェクトを示すもので、 4つの属性のうち SG_ATTR_FOCUS だけは他のものの上に重ねて使用されます。
よって、フォーカスに指定される画像は、ほとんどが透明で枠だけやポインタだけが存在するような デザインになります。
この時、画像ファイルはリソースフォルダにあるものとします。
初期リソースフォルダは "resources/" です。
void SGGraphics::SetImageFolder(const char* folder)
で変更することが出来ます。
id | リソース認識用のID(任意のユニークな数値) | |
attr | 登録リソースの属性SG_ATTR_NORMAL(0) 通常の状態用 SG_ATTR_DISABLE(1) ディスエーブルの状態用 SG_ATTR_ACTIVE(2) アクティブの状態用(ラジオ、チェックなど) SG_ATTR_FOCUS(3) フォーカス用 | |
fontid | フォント リソースID | |
margin | マージン | |
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 枠からはみ出す場合でもクリップしないでそのまま表示します。 左右方向の寄せと上下方向の寄せをそれぞれ指定できます。 | |
col | テキスト表示色 | |
filename | リソース画像のファイル名 |
TRUE | 成功 | |
FALSE | 失敗 |
int SetImageFrame | ( | int | id, | |
int | attr, | |||
int | fontid, | |||
int | margin, | |||
int | align, | |||
unsigned int | col, | |||
unsigned int | colsub, | |||
const char * | filename | |||
) |
フレーム用のリソースを登録する。
フレーム用のリソースの登録を行います。 登録はアプリケーション起動時に全てのリソースを登録します。
この関数はリソース情報の登録のみを行います。
登録したリソースは、ダイアログ生成時に SGGroupObject::AddFrame() をコールすることで 実際に使用することが出来るようになります。
SetImageFrame(IFRM_STD,SG_ATTR_TOP ,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK,SG_COL_GRAY,"FrmT.png"); SetImageFrame(IFRM_STD,SG_ATTR_MIDDLE,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK,SG_COL_GRAY,"FrmM.png"); SetImageFrame(IFRM_STD,SG_ATTR_BOTTOM,FNT24,0,SG_ALIGN_CENTER,SG_COL_BLACK,SG_COL_GRAY,"FrmB.png");
上記サンプルのように1つのリソース登録に対して関数を3回コールして使用します。
※全て必要です。省略できません。
この時、画像ファイルはリソースフォルダにあるものとします。
初期リソースフォルダは "resources/" です。
void SGGraphics::SetImageFolder(const char* folder)
で変更することが出来ます。
id | リソース認識用のID(任意のユニークな数値) | |
attr | 登録リソースの属性SG_ATTR_TOP(0) 上段部分 SG_ATTR_MIDDLE(1) 中間部分 SG_ATTR_BOTTOM(2) 下段部分 | |
fontid | フォント リソースID | |
margin | マージン | |
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 枠からはみ出す場合でもクリップしないでそのまま表示します。 左右方向の寄せと上下方向の寄せをそれぞれ指定できます。 | |
col | テキスト表示色 | |
filename | リソース画像のファイル名 |
TRUE | 成功 | |
FALSE | 失敗 |