2

簡単な質問があります。C++ プログラムで SDL と SDL_image を使用していますが、単一の png ファイルからの画像の読み込みは問題ありません。

SDL_Surface *dot = NULL;
dot = load_image("dot.png");

しかし、リソースに追加した場合、png ファイルをロードするにはどうすればよいですか? そのため、exeの横にあるpngファイルに保存したくありません。リソースからロードすることは可能ですか?

試した

dot = load_image(MAKEINTRESOURCE(IDB_PNG1));

しかし、うまくいきませんでした。

4

2 に答える 2

2

イメージやその他のものを Windows リソースから SDL にロードすることは完全に可能です。これを行うには、生データを取得して適切な RWOPS に渡す必要があります。

HMODULE hModule = GetModuleHandle(_T("myapp.exe"));

HRSRC hWhite = FindResource(hModule, MAKEINTRESOURCE(IDB_WHITE_PNG), _T("PNG"));            
unsigned int white_size = SizeofResource(hModule, hWhite);
HGLOBAL hgWhite = LoadResource(hModule, hWhite);
unsigned char* white_data = (unsigned char*)LockResource(hgWhite);

SDL_Surface* white = IMG_Load_RW(SDL_RWFromConstMem(white_data, white_size), 1);

これは、*.rc ファイルに同様のものがあることを前提としています。

IDB_WHITE_PNG  PNG "White.png"
于 2014-06-21T16:34:45.180 に答える
0

MAKEINTRESOURCE ドキュメントによると:

戻り値は、MAKEINTRESOURCE をパラメーターとして受け入れることを明示的に示す関数にのみ渡す必要があります。

(ところで、質問で使用する関数の内容を含めてください。より良い回答が得られます...)の内容は提供しませんload_imageが、Windows SDK関数の1つを呼び出すためにそのパラメーターを使用していないに違いありませんこれは受け入れMAKEINTRESOURCEます...私が知る限り、これらのリソースは、マウスカーソル、アイコンなどの特定のWindows UIデータを保持することになっています..SDLのような他のライブラリではなく、Windows機能で使用するためです。動作しません。

于 2012-08-10T13:31:07.567 に答える