배경을 클래스화 해서 출력하기.

|

배경 클래스 헤더 파일을 하나 만들어서 클래스를 하나 선언한다.

클래스의 이름은 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
And