クラス SGApplication

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 ()
 スレッドを終了します
SGCoreGetCore ()
 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 データが到達したファイルディスクリプタ(登録したもの)
参照:
int SGApplication::AddEventFd(int fd,int id)
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以外を返します。
参照:
SGGraphics::DrawCaret(int w,int h)
SGCaret::DrawCaret(int w,int h)
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 を登録します。
戻り値:
関連付けしたid が返されます。
※id 指定を省略した場合は ReceiveEvent で受けたイベントを判別する為に、 この値を記憶しておく必要があります。
参照:
void SGApplication::ReceiveEvent(int id,int fd)
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 SGDialog::SetTimerInterval(int time)
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 SGApplication::CancelThread()
void CancelThread (  ) 

スレッドを終了します

アプリケーションの終了時にコールします。 起動時に CreateThread() によって作成されたスレッドを停止させます。

参照:
int SGApplication::CreateThread()
SGCore * GetCore (  ) 

SGCoreオブジェクトを取得する.

アプリケーション(SGApplication)が保持するSGCoreオブジェクトを取得します。

戻り値:
SGCoreオブジェクトのポインタ
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型256個の配列です。
unsigned int palette_data[256] = {
 // bb gg rr
 0x00000000,
 0x5877b100,
   .
   .
 0x434c5c00,
};

画像ファイルから自動的に抽出する場合は、リソース画像フォルダに”SharedPalette.png”という パレットを持った画像ファイルを用意してください。
パレットエディタを使用しリソース画像を用意した場合、このパレット登録用画像は自動的に生成されます。

その初期関数の中では必要に応じて
SGApplication::AddEventFd(int fd,int id)
SGCore::SetSoundClass(SGSound* sound)
などもコールします。
引数:
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 イベントが取得出来ませんでした。
参照:
SGCore::GetEvent(_SGEvent* event)
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 アプリケーションの終了
参照:
SGCore::GetEvent(_SGEvent* event)
SGCore::CheckEvent(_SGEvent* event)
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 回転量と回転方向
正負で方向を表します。
参照:
SGCore::PostEventWheel(int 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経過すると発生します。

参照:
SGCore::PostEventButton()
void PostEventKeyboard ( int  act,
const char *  symbol_name 
)

キーボードイベントを発行する。

キーボード イベントを発行します。

引数:
act アクションタイプ

SG_ACT_DOWN  (0)  押下
SG_ACT_UP    (1)  解放
symbol_name キーの名前
参照:
SGCore::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 
)

アプリケーションで使用するフォントを登録する。

アプリケーションで使用するフォントを登録します。
オブジェクトやダイアログで文字を表示する為には予め登録しておく必要があります。
フォントは 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   枠からはみ出す場合でもクリップしないでそのまま表示します。

左右方向の寄せと上下方向の寄せをそれぞれ指定できます。
属性は複数指定可能です。
寄せや属性など複数指定の場合は|(or)で組み合わせて指定します。

col テキスト表示色
filename リソース画像のファイル名
戻り値:
TRUE 成功
FALSE 失敗
参照:
int SetImageButton(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)
int SetImageEditbox(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)
int SetImageFrame(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)
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   枠からはみ出す場合でもクリップしないでそのまま表示します。

左右方向の寄せと上下方向の寄せをそれぞれ指定できます。
属性は複数指定可能です。
寄せや属性など複数指定の場合は|(or)で組み合わせて指定します。

col テキスト表示色
filename リソース画像のファイル名
戻り値:
TRUE 成功
FALSE 失敗
参照:
int SetImageButton(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)
int SetImageEditbox(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)
int SetImageFrame(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)
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   枠からはみ出す場合でもクリップしないでそのまま表示します。

左右方向の寄せと上下方向の寄せをそれぞれ指定できます。
属性は複数指定可能です。
寄せや属性など複数指定の場合は|(or)で組み合わせて指定します。

col テキスト表示色
filename リソース画像のファイル名
戻り値:
TRUE 成功
FALSE 失敗
参照:
int SetImageButton(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)
int SetImageEditbox(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)
int SetImageFrame(int id,int attr,int fontid,int margin,int align,unsigned int col,unsigned int colsub,const char* filename)

このクラスの説明は次のファイルから生成されました:

PlusG リファレンスマニュアル Ver 2.0.0