Insert 메뉴 -> New Class 를 실행한다.
Class type 를 Generic Class 로 하고,
Class Name 에 클래스명인 CWATOneTetris 를 입력한다.
OK를 하면 WorkSpace의 클래스 탭에서 CWATOneTetris 클래스가 생성된 것을 알수 있다.
그 클래스를 열어 보면 아래와 비슷한 것이다.(지금은 껍데기만 있는 것이다.)
// WATOneTetris.h: interface for the CWATOneTetris class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_WATONETETRIS_H__D296C55F_6E25_4BC6_A4CF_FDFDA15F5677__INCLUDED_)
#define AFX_WATONETETRIS_H__D296C55F_6E25_4BC6_A4CF_FDFDA15F5677__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CWATOneTetris
{
public:
CWATOneTetris();
virtual ~CWATOneTetris();
};
#endif // !defined(AFX_WATONETETRIS_H__D296C55F_6E25_4BC6_A4CF_FDFDA15F5677__INCLUDED_)
여기에 앞에서 작업했던 몇가지 변수를 복사해놓고,
초기화한다.
WATOneTetris.cpp 에는 몇가지 헤더파일을 추가해야 한다.
#include "MainFrm.h"
#include "WATTetrisDoc.h"
#include "WATTetrisView.h"
게임을 동시에 여러개하려면 각각의 게임을 구별해야 하는데,
그것을 게임ID로 구별하겠다.
(즉, 처음 게임을 0번 게임
두번째 게임을 1번게임
세번째 게임을 2번게임이라 하겠다.)
화면에 게임ID표시하기
화면에 게임ID를 표시해야 하는데 어떻게 해야 할까?
전에 한거처럼 OnPain()에서 작업을 해야 할까?
OnPaint()에서 해도 문제가 되지는 않지만, 화면에 관련된 정보는 View클래스에서 하는게 일반적이기 때문에
CWATTetrisView.cpp의 OnPaint()만을 사용하는게 좋다.
여기서는 CWATTetrisView의 View 정보를 얻어서 그것으로 작업을 할것이다.
void CWATOneTetris::DrawGameID()
{
CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
CWATTetrisView *pView = (CWATTetrisView *)pFrame->GetActiveView();
CClientDC pDC(pView); // view 의 정보를 얻음
CPen penLine; // 사용할 pen 의 셋팅
CPen *OldPen; // 기존에 사용하던 설정으로 복구할 변수
penLine.CreatePen(0,3,RGB(0,0,0));
OldPen = pDC.SelectObject((&penLine));
pDC.TextOut(3,3,"ID");
pDC.SelectObject(OldPen); // 기존의 상태로 복구
}
실행해보자.........................................
ID가 표시되는가? 당연히 아무런 변화가 없을것이다.
(화면에 게임ID를 표시하는 함수가 있긴있는데 사용을 하지 않았기 때문에 너무나 당연한 것이다.)
이제 만든 클래스를 View에서 사용해보자.
헤더 파일에 추가를 하고
#include "WATOneTetris.h"
클래스를 추가하고
CWATOneTetris m_oneTetris[3];
View의 OnPaint()함수에
m_oneTetris[0].DrawGameID();
m_oneTetris[1].DrawGameID();
m_oneTetris[2].DrawGameID();
를 추가하면 왼쪽 위에 게임ID 하나만 표시될 것이다.
(모두 같은 좌표를 사용하기 때문에 그렇다.)
보드의 X,Y좌표를 추가해야 한다.
결과는 아래와 같이 게임ID가 각각 표시될 것이다.
소스 : WATTetris_20071019.zip
.
맨 위 사진이 표시가 안대요 .....