Hi, first post

I did a search for this but either my search was too specific and yielded no results or too general and I couldn't find any relevant threads, so I apologize if this has already been posted.

Secondly, I hope this is the correct section to post this in.

I have been re-learning C++ for the past few days, I originally started learning C++ a while back with the intention of writing small games but never got very deep into learning an API, so I am starting on SDL now.

My problem is that I have been going through tutorials (Lazy Foo'), and on the second tutorial he writes about how to use .bmp images.
I can compile and run the code just fine with no errors or warnings, but when the program runs the new SDL window only shows black, no images.

I have made sure that the .bmp files are in the same folder as the .exe file and had double checked spelling in my code (I copied the code from Lazy Foo' by hand as i went along)

Anyway, any help would be highly appreciated as i've checked my code over several times.

I even downloaded his source code, copied it into my IDE and still got the same results.
Because of this I'm not sure if it has anything to do with the code itself, or if I'm just putting the .bmp files in the wrong place (They are supposed to go with the .exe right?)

This is my copy of the Lazy Foo' code.
(If it makes any difference at all I am using Visual C++ 2008)

Code:
#include "SDL.h"
#include <string>

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;

SDL_Surface *loadImage(std::string filename) {
	SDL_Surface *loadedImage = NULL;
	SDL_Surface *optimizedImage = NULL;
	
	loadedImage = SDL_LoadBMP(filename.c_str());
	
	if(loadedImage != NULL) {
		optimizedImage = SDL_DisplayFormat(loadedImage);
		SDL_FreeSurface(loadedImage);
	}
	
	return optimizedImage;
}

void applySurface(int x, int y, SDL_Surface *source, SDL_Surface *destination) {
	SDL_Rect offset;
	
	offset.x = x;
	offset.y = y;
	
	SDL_BlitSurface(source, NULL, destination, &offset);
}

int main(int argc, char *args[]) {
	if(SDL_Init(SDL_INIT_EVERYTHING) == -1) {
		return 1;
	}
	
	screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE);
	
	if(screen == NULL) {
		return 1;
	}
	
	SDL_WM_SetCaption("SDL Window", NULL);
	
	message = loadImage("message.bmp");
	background = loadImage("background.bmp");
	
	applySurface(0, 0, background, screen);
	applySurface(180, 140, message, screen);
	
	if(SDL_Flip(screen) == -1) {
		return 1;
	}
	
	SDL_Delay(2000);
	
	SDL_FreeSurface(message);
	SDL_FreeSurface(background);
	
	SDL_Quit();
	
	return 0;
}