トップページgamedev
1001コメント397KB

DXライブラリ 総合スレッド 2008

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2008/10/25(土) 17:37:53ID:BCFbbKco
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。

DXライブラリの詳細ついては
http://homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。

DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

過去スレ:DXライブラリ 総合スレッド
      http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
0691名前は開発中のものです。2009/03/01(日) 08:23:41ID:idjBCaEs
今非公開関数まとめてたんだけど、すごくわかりやすいからわざわざまとめるほどでもない気がしてきた
作者が公開してないんだから公開するのも何かな……
一応簡単に晒すけど……
使い方(引数)、いつ呼ぶのか(DxLib初期化前か後か)、返値……ここらへんが分かれば良いんだよね?
もしこの中で知りたいとか要望あるならHTMLにして、簡単なソースくらいくっつけてリファレンス化するよ


起動→終了で複数回DxLibを読み込まなければいけないとき(あるのか?)に使えそう
int DxLib_GlobalStructInitialize( void ) ;
// ライブラリの内部で使用している構造体をゼロ初期化して、DxLib_Init の前に行った設定を無効化する( DxLib_Init の前でのみ有効 )
int DxLib_IsInit( void ) ;
// ライブラリが初期化されているかどうかを取得する( 戻り値: TRUE=初期化されている FALSE=されていない )

ファイルを検索して取得ウマー
int FileRead_findFirst( const char *FilePath, FILEINFO *Buffer ) ;
// 指定のファイル又はフォルダの情報を取得し、ファイル検索ハンドルも作成する( 戻り値: -1=エラー -1以外=ファイル検索ハンドル )
int FileRead_findNext( int FindHandle, FILEINFO *Buffer ) ;
// 条件の合致する次のファイルの情報を取得する( 戻り値: -1=エラー 0=成功 )
int FileRead_findClose( int FindHandle ) ;
// ファイル検索ハンドルを閉じる( 戻り値: -1=エラー 0=成功 )

ウィンドウから情報を引っ張り出す系の関数
int GetWindowCRect( RECT *RectBuf ) ;
// ウインドウのクライアント領域を取得する→描画領域ね
int GetActiveFlag( void ) ;
// ソフトがアクティブかどうかを取得する→現在アクティブかどうかを調べる。-1が非アクティブ、0がアクティブとかだと思う(未確認)
HWND GetMainWindowHandle( void ) ;
// メインウインドウのハンドルを取得する→分かる人のために
int GetNoActiveState( int ResetFlag = TRUE ) ;
// 非アクティブになり、処理が一時停止していたかどうかを取得する(引数 ResetFlag=TRUE:状態をリセット FALSE:状態をリセットしない 戻り値: 0=一時停止はしていない 1=一時停止していた )
int GetMouseDispFlag( void ) ;
// マウスを表示するかどうかのフラグを取得する
0692名前は開発中のものです。2009/03/01(日) 08:24:40ID:idjBCaEs
int GetMouseDispFlag( void ) ;
// マウスを表示するかどうかのフラグを取得する
int GetWindowCloseFlag( void ) ;
// ウインドウを閉じようとしているかの情報を得る→本当に終了しますか?とか確認を表示するのに使えそう
int GetWindowUserCloseFlag( int StateResetFlag = FALSE ) ;
//×ボタンが押されたかどうかを調べる
int SetDoubleStartValidFlag( int Flag ) ;
// 2重起動を許すかどうかのフラグをセットする←複数起動させてもいいゲームならここを変更

マルチタスクのゲーム作りたいならここらへんが役に立ちそう
int AddMessageTakeOverWindow( HWND Window ) ;
// メッセージ処理をDXライブラリに肩代わりしてもらうウインドウを追加する
int SubMessageTakeOverWindow( HWND Window ) ;
// メッセージ処理をDXライブラリに肩代わりしてもらうウインドウを減らす

軽くみた感じ使えそうなのはこのあたりかな?
0693名前は開発中のものです。2009/03/01(日) 08:37:37ID:idjBCaEs
int SetWindowInitPosition( int x , int y ) ;
// ウインドウの初期位置を設定する
int SetNotWinFlag( int Flag ) ;
// DXライブラリのウインドウ関連の機能を使用しないフラグ←これめちゃくちゃ便利でふいた
int SetWindowUserCloseEnableFlag( int Flag ) ;
// メインウインドウの×ボタンを押した時にライブラリが自動的にウインドウを閉じるかどうかのフラグをセットする←上記のGetWindowCloseFlagと組み合わせると幸せ
int SetDXArchiveExtension( const char *Extension = NULL ) ;
// 検索するDXアーカイブファイルの拡張子を変更する
int SetBackgroundColor( int Red, int Green, int Blue ) ;
// メインウインドウのバックグラウンドカラーを設定する←初期背景色は黒(#000000)
int SetDragFileValidFlag( int Flag ) ;

ドラッグ&ドロップかんれん
// ファイルのドラッグ&ドロップ機能を有効にするかどうかのフラグをセットする
int GetDragFilePath( char *FilePathBuffer ) ;
// ドラッグ&ドロップされたファイル名を取得する( -1:取得できなかった 0:取得できた )
int GetDragFileNum( void ) ;
// ドラッグ&ドロップされたファイルの数を取得する

めんどくさいから、存在だけ書くけど
他にも、ツールバーにボタンを追加する関数とか
ショートカットキーを追加する関数とか(←いくらでも代用可能だから使わない方がいいかも)
メニューを作成する関数とか
キー入力中、マウスを点滅させる関数とか

ここらへんは人によってピンポイントに使えそうな関数ばっかだから、あんまりリファレンス化しても需要無い気がする
一応応用テクニックとして、HSPからDXライブラリを呼ぶ方法とかだったら需要ある?
あるなら書こうかな

吉里吉里やNscから呼ぶことも出来そうだけど本体いじらなきゃ駄目っぽくてめんどくさい
0694名前は開発中のものです。2009/03/01(日) 08:44:55ID:idjBCaEs
たとえば、×ボタンで終了確認を出したいときとかは

〜略〜

SetWindowUserCloseEnableFlag( FALSE ); //×ボタンで自動終了しない

while(ProcessMessage()==1)//だっけ?
{

ClsScreen();
game();
ScreenFlip();

if(GetWindowUserCloseFlag()==-1)//×ボタンが押されたら
{
if(MessageBox(NULL,"終了しますか?","終了確認",MBYESNO)==IDYES) //YES,NOでYESが押されたら
break;
}

}

〜略〜

こんな感じにすればできる(と思う)
組み合わせだからなあ……リファレンス作るより小技をいくつか乗せた方が良いのかな?
■ このスレッドは過去ログ倉庫に格納されています