トップページ > 過去ログ > 記事閲覧
MemStreamOpenについて
名前:びいかめ 日時: 2010/10/02 20:11

MemStreamOpenで得られる返り値は、どのように使うことを想定しているのでしょうか 追記:関数名を訂正しました

Page: 1 |

Re: OpenMemStreamについて ( No.1 )
名前:いっち 日時:2010/10/02 15:44

MemStreamOpen関数の事だと思いますが、この関数の戻り値は STREAMDATA構造体の DataPointメンバに設定して、ReadShredメンバとセットで使用するようです。 STREAMDATA構造体は CreateGraphImageType2関数やユーザー定義のローダー等で使用しています。 ただ、ユーザーが直接 MemStreamOpen の戻り値を操作するためには dxstatic.h をインクルードして GetMemStreamDataShredStruct関数を使い、操作用の関数群を取得する必要があると思います。 ※実際に使用したり検証したことは無いので、間違っていたらごめんなさい
Re: MemStreamOpenについて ( No.2 )
名前:びいかめ 日時:2010/10/02 20:12

MemStream用のReadShredの設定方法がわからないのですが、どのようにすればいいのでしょうか
Re: MemStreamOpenについて ( No.3 )
名前:いっち 日時:2010/10/02 21:19

MemStreamOpen関数で作成した DataPoint に対応する ReadShred は GetMemStreamDataShredStruct関数で得られます。(たぶん・・・)
Re: MemStreamOpenについて ( No.4 )
名前:びいかめ 日時:2010/10/02 21:23

GetMemStreamDataShredStruct関数は、DxStatic.h内で宣言されていてDxLib.hから呼ぶことが出来ませんが、使ってしまっていいのでしょうか
Re: MemStreamOpenについて ( No.5 )
名前:いっち 日時:2010/10/02 21:59

非公開のさらに非公開を使うわけですので、その辺は自己責任なんじゃないでしょうか。 ただ、GetMemStreamDataShredStruct を使わない場合、自前でseek等の関数を実装することになると思います。 何も検証しないのは不安だったので、とりあえず使ってみました。 #include "DxLib.h" namespace DxLib { extern STREAMDATASHRED *GetMemStreamDataShredStruct( void ); }; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ); if ( DxLib_Init( ) == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ); int StrColor = GetColor( 255, 255, 255 ); const char* strbuff = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; char buff = 0; STREAMDATASHRED *shred = GetMemStreamDataShredStruct( ); void *memstream = MemStreamOpen( (void *)strbuff, strlen( strbuff ) ); shred->Read( &buff, 1, 1, memstream ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { ClearDrawScreen( ); if ( CheckHitKey( KEY_INPUT_SPACE ) ) shred->Read( &buff, 1, 1, memstream ); DrawFormatString( 0, 0, StrColor, "TEST %c", buff ); ScreenFlip( ); } DxLib_End( ); return 0; }
Re: MemStreamOpenについて ( No.6 )
名前:びいかめ 日時:2010/10/02 23:18

ソースコードありがとうございます DXライブラリのソースコードを読む限り内部的にはGetMemStreamDataShredStructを使って設定しているようなので、運用上は問題ないとは思います
Re: MemStreamOpenについて ( No.7 )
名前:管理人 日時:2010/10/04 05:39

MemStreamOpen の戻り値の使い方はいっちさんのご解説の通りです ただ、GetMemStreamDataShredStruct 関数を使わないと殆ど意味が無いですね・・・

Page: 1 |