リソースの使い方について悩んでいます。画像をリソースするにはリソーススクリプトファイルに
title RCDATA "data\gametitle.jpg"
と書き、
HRSRC hRes = FindResource(NULL, "title", RT_RCDATA);
gametitlejpg = CreateGraphFromMem(LockResource(LoadResource(NULL, hRes)), SizeofResource(NULL, hRes));
DrawGraph(0,60,gametitlejpg,FALSE);
と使ういうことは分かりました。しかし動画を同じ方法でやろうと思ったら「Turbo Incremental Linker」が強制終了してしまいます。動画は別の方法でリソースしなければならないのでしょうか?
DXライブラリとC言語をつかってシューティングを作っています。
使用コンパイラは Borland bcc32
補助ソフトとして BCC Developer を使っています。
DXライブラリを使うのは初めてです。暗号化は難しそうだったのでリソースでデータをプレイヤーから隠そうと考えています
リソースの使い方
Re:リソースの使い方
リソースの埋め込みはそれでいいと思います。
が、CreateGraphFromMem()は画像用ですし、動画で同じ方法ってどの関数を使ったのでしょうか。
一見メモリから動画を再生する関数は Dxライブラリにはないように見えますが。
もしあるようでしたら、その関数を提示して下さい。
ないようでしたら、そもそもメモリから再生はできないと考えて別の手段を考える必要があります。
例えばあくまでリソースとして埋め込みたいのであれば、そのメモリ内にあるデータを
一端ユーザにはわからないようなところにファイルとして書き出して(不可視属性をつけておくと尚良し)、
そのファイルから動画を再生させ、再生が終了したらそのファイルを消す、とか。
Win32APIの GetTempPath()とか GetTempFileName()などのテンポラリ関連の操作関数と
併用すれば解析されない限りそうそうユーザーにはわからないと思います。
が、CreateGraphFromMem()は画像用ですし、動画で同じ方法ってどの関数を使ったのでしょうか。
一見メモリから動画を再生する関数は Dxライブラリにはないように見えますが。
もしあるようでしたら、その関数を提示して下さい。
ないようでしたら、そもそもメモリから再生はできないと考えて別の手段を考える必要があります。
例えばあくまでリソースとして埋め込みたいのであれば、そのメモリ内にあるデータを
一端ユーザにはわからないようなところにファイルとして書き出して(不可視属性をつけておくと尚良し)、
そのファイルから動画を再生させ、再生が終了したらそのファイルを消す、とか。
Win32APIの GetTempPath()とか GetTempFileName()などのテンポラリ関連の操作関数と
併用すれば解析されない限りそうそうユーザーにはわからないと思います。
Re:リソースの使い方
>>Justyさん
回答ありがとうございます。
リソースに
movie RCDATA "data\opening.wmv"
と記述し、
HRSRC hRes = FindResource(NULL, "movie", RT_RCDATA);
int opening = CreateGraphFromMem(LockResource(LoadResource(NULL, hRes)), SizeofResource(NULL, hRes));
PlayMovie("opening",1,DX_MOVIEPLAYTYPE_BCANCEL);
とソースの方に記述して動画を再生しようと考えましたが強制終了してしまいました。
動画は普通リソースとして埋め込まないものなんでしょうか?
回答ありがとうございます。
リソースに
movie RCDATA "data\opening.wmv"
と記述し、
HRSRC hRes = FindResource(NULL, "movie", RT_RCDATA);
int opening = CreateGraphFromMem(LockResource(LoadResource(NULL, hRes)), SizeofResource(NULL, hRes));
PlayMovie("opening",1,DX_MOVIEPLAYTYPE_BCANCEL);
とソースの方に記述して動画を再生しようと考えましたが強制終了してしまいました。
動画は普通リソースとして埋め込まないものなんでしょうか?
Re:リソースの使い方
>int opening = CreateGraphFromMem(LockResource(LoadResource(NULL, hRes)), SizeofResource(NULL, hRes));
CreateGraphFromMem()・・・この関数は画像用です。動画で使うべきものではありません。
多分、こういう使い方をしたときのこの関数の戻り値 openingのは -1(エラー)になっていると思います。
それに得られたグラフィックハンドル openingを使わず、"opening"というファイルの動画を再生しようとしていますよ。
とりあえず、動画用のメモリから再生するルーチンを探してみて下さい。
(私には見つけられませんでした)
>動画は普通リソースとして埋め込まないものなんでしょうか
んー、動画をリソースして埋め込むのはあまり聞かないですね。
基本的にアイコンとかダイアログとかメニューとかの直接アプリケーションに関わっているもの以外のデータは
プログラムと分離するのが普通ですし。
CreateGraphFromMem()・・・この関数は画像用です。動画で使うべきものではありません。
多分、こういう使い方をしたときのこの関数の戻り値 openingのは -1(エラー)になっていると思います。
それに得られたグラフィックハンドル openingを使わず、"opening"というファイルの動画を再生しようとしていますよ。
とりあえず、動画用のメモリから再生するルーチンを探してみて下さい。
(私には見つけられませんでした)
>動画は普通リソースとして埋め込まないものなんでしょうか
んー、動画をリソースして埋め込むのはあまり聞かないですね。
基本的にアイコンとかダイアログとかメニューとかの直接アプリケーションに関わっているもの以外のデータは
プログラムと分離するのが普通ですし。