もう一度、機能させる方法を理解できないコードに行き詰まりました。SDL サーフェスを作成し、ビットマップ イメージを読み込んで表示しようとしています。私のコードは次のようなものです:
struct Image {
string Name;
SDL_Surface* Surface;
};
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, PSTR lpCmdL, INT nCmdS) {
// Will store our bitmap
Image NewImage;
// Initialization
SDL_Init(SDL_INIT_EVERYTHING);
// Create main window
SDL_Surface *Window = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
SDL_WM_SetCaption("MyApp", "MyApp");
// Load image and make it compatible
SDL_Surface* Surf_Temp = NULL;
if((Surf_Temp = SDL_LoadBMP("myimage.bmp")) != NULL) {
NewImage.Name = "MyImage";
NewImage.Surface = SDL_DisplayFormat(Surf_Temp);
SDL_FreeSurface(Surf_Temp);
}
// Draw image over the window
if (NewImage.Surface != NULL && Window != NULL) {
SDL_Rect DestR;
DestR.x = 0;
DestR.y = 0;
if (SDL_BlitSurface(NewImage.Surface, NULL, Window, &DestR) == -1) {
MessageBox(NULL, "Error", "Alert", MB_OK);
}
}
// Run
SDL_Event Event;
while(!End) {
while(SDL_PollEvent(&Event)) {
EventsHandler(&Event);
}
}
return 0;
}
さて、画像は正しく読み込まれました。正しいビットマップの幅である NewImage.Surface->w (幅) を取得して確認しました。エラー メッセージ (SDL_BlitSurface が 0 を返す) は表示されないので、ウィンドウがまだ黒く、画像が表示されない理由がわかりません。