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 関数を使わないと殆ど意味が無いですね・・・
|