배경 클래스 헤더 파일을 하나 만들어서 클래스를 하나 선언한다.
클래스의 이름은 BackGround이며 이 클래스는 Object클래스를 부모로 상속받는다.
부모클래스인 Object클래스에서
두 개의 순수 가상함수가 있는데,
Render와 Update다.
순수가상함수를 가볍게 설명 하자면 내용이 없다는 뜻에서 =0이 붙은 함수이다.
이 멤버함수가 포함된 클래스를 상속 받을 시에는 가상 멤버함수로 선언된 함수들을 반드시 재 정의 해줘야 한다.
보시다시피 Render와 Update의 2개의 멤버함수가 있지만 우리가 사용할 것은
Render멤버함수 뿐이다.
Update는 쓰지 않으므로 부모클래스에서 상속 받을 필요는 없지만,
부모 클래스가 다른 클래스도 상속 해 줄수 있으니 별 수 없이 받아오는 것이다.
그런데 별수 없이 받아온 함수가 순수 가상함수 이니 재 정의를 해줘야 하는데
그 방법은 어렵지 않다.
그냥 함수 앞에 블럭( { } )을 붙이고 내용을 채우지 않으면 된다.
Virtual void Update(){}
우리가 사용할 랜더 함수이다.
이 함수가 하는 일은 비트맵을 받아와서 화면에 뿌려주는 일을한다.
m_Resource로 비트맵을 받아와서 m_hMemDC에 뿌려주고, m_hBackBuffer에 복사해준다.
그리고 메인에 WM_PAINT에서 BitBlt을 다시 써서 화면으로 뿌려주면 완료된다.
클래스화된 배경을 사용하려면 메인 함수에 배경 헤더에대한 파일을 #include해주고 배경 클래스 변수를 전역변수로 하나 선언해 준다.
그리고 메세지 루프를 GetMessage에서 PeekMessage로 바꿔줘야 하는데,
깊게는 안들어가고 가볍게 말하자면
GetMessage는 문서용인 반면,
PeekMessage는 게임용이라고 생각하면 된다.
WM_CREATE에서 LoadBitmap으로 불러온 비트맵을
동적할당된 메모리에 Init의 인자로 넘겨준다.
이때 3개의 인자를 넘겨줘야 하는데, 그려질 도화지인 g_hBackBuffer와 그릴 일을 할 g_hMemDC와 그려질 리소스인 g_hBGA를를 넘겨준다.
프로그램 종료시 사용했던 DC들과 동적 메모리를 해제해 준다.
결과
'API > 이론' 카테고리의 다른 글
시간 경과에 따른 애니메이션 (0) | 2016.04.29 |
---|---|
캐릭터 출력하기. (0) | 2016.04.28 |
여러 이미지 출력을 위한 소스정리 및 파일 나누기 (0) | 2016.04.26 |
배경화면 출력하기. (0) | 2016.04.26 |
더블 버퍼링 (0) | 2016.04.25 |