Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.1 ) |
- 名前:管理人 日時:2010/03/15 23:46
現在の LoadGraphToResource は必ずデフォルトのインスタンスハンドルを使用してリソースを取ってこようとするので、
その際に使用するインスタンスハンドルを変更するための関数を追加してみました
// リソースを読み込む際に使用するモジュールを設定する( NULL を指定すると初期状態に戻ります、デフォルトでは NULL )
int SetResourceModule( HMODULE ResourceModule ) ;
機能は注釈の通りです、LoadGraphToResource や LoadSoundMemByResource を使用する前にリソースが含まれたDllの
インスタンスハンドルを SetResourceModule に渡して呼んでやってください
というわけで、よろしければこの機能を追加したバージョンをお使いになってみてください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
|
Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.2 ) |
- 名前:くま 日時:2010/03/17 19:52
管理人様
ありがとうございます!
これでexeが重くならずにすみそうです。
早速使用させて頂きます。
|
Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.3 ) |
- 名前:くま 日時:2010/03/18 20:39
たびたびすみません。
早速使用してみましたがLoadGraphToResourceは
LoadGraphToResource(int ResourceID)のみ動作するのでしょうか。
LoadGraphToResource( const char *ResourceName, const char *ResourceType )
で実行すると-1がかえってきてしまいます。
例えば以下のようなコードです。
g_hdll = LoadLibrary("data.dll");
int ret = SetResourceModule(g_hdll);//g_hdllはインスタンスハンドル
int hImg0 = LoadGraphToResource(IDR_BMP17);
int hImg1 = LoadGraphToResource(MAKEINTRESOURCE(IDR_PNG17),"PNG");
int hImg2 = LoadGraphToResource(MAKEINTRESOURCE(IDR_JPG17),"JPG");
上記のコードですと
ret ・・・ 0
hImg0 ・・・ アドレス値
hImg1 ・・・ -1
hImg2 ・・・ -1
使い方が悪いのかもしれませんが
よろしければご教授頂けないでしょうか。
|
Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.4 ) |
- 名前:管理人 日時:2010/03/22 01:46
いえ、LoadGraphToResource( const char *ResourceName, const char *ResourceType )も使えます
使い方も間違っていないはずです
私は一度読み込むリソースを登録する際にリソースタイプを "PNG" としてしまい( リソースタイプ名に " を加えてしまった )、
LoadGraphToResource( MAKEINTRESOURCE( IDR_PNG1 ), "\"PNG\"" ) ;
としなければならなくなったことがありますが、このケースでは無いでしょうか?
|
Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.5 ) |
- 名前:くま 日時:2010/03/24 16:44
管理人様
ご連絡ありがとうございます。
確認してみましたが、そこではなさそうでした。
こんな感じで定義してたので間違ってないかと。
IDR_PNG17 PNG "H:\\...
#defineの定義された名前が他のリソースと混同してないかもチェックしましたが大丈夫そうでした。
ちょっとこちらの環境での違いがわからないのでとりあえずもう少しもがいてみます。
ありがとうございました。
|
Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.6 ) |
- 名前:管理人 日時:2010/03/29 06:40
くまさんと同じ開発環境でこちらでもリソースを含むDLLを使うサンプルを作って見たいと思いますので
よろしければお使いの開発環境を教えていただけないでしょうか?
|
Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.7 ) |
- 名前:くま 日時:2010/03/30 11:30
管理人様
ありがとうございます。
以下当方の環境です。
OS:Windows vista ultimate 32bit
コンパイラ:vs2008 professional
Win32 アプリケーションプロジェクト
変更点は
Multi-threaded (/MT)
Use Multi-Byte Character Set
ぐらいです。
DLLはemptyプロジェクトに/NOENTRY オプションを付けて作成。
あとは上記のコードを作成して実行しています。
お手数おかけして恐縮です。
足りない情報等ありましたらまた御願いします。
|
Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.8 ) |
- 名前:管理人 日時:2010/04/05 01:39
ご返答ありがとうございます
私も vs2008 standard を所有していたので試してみました
結果、ライブラリのバグでした orz
SetResourceModule に渡されたインスタンスハンドルを使うべき箇所が3箇所あるのに
1箇所でしか使っていないのが原因でした
( 引数が一つの LoadGraphToResource では使うべき箇所が1箇所だったので大丈夫だった )
修正版をアップしましたので、よろしければお試し下さい m(_ _;m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
|
Re: リソースのみのDLLからDxLibを使用した画像表示 ( No.9 ) |
- 名前:くま 日時:2010/04/07 13:57
管理人様
対応ありがとうございました。
修正版で動作確認しました。
お手数をおかけ致しまして大変恐縮です。
ありがとうございました。
|