•
학습내용
◦
WINAPI 객체지향 프로그래밍으로 사용하기
▪
객체지향
•
데이터와 절차를 하나의 덩어리로 묶어서 생각
•
책임에 따라 잘 나눠서 개발
▪
절차지향
•
순차적인 처리가 중요시 되며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
•
아직 비행기나 자동차 (임베디드) 쪽은 절차지향을 사용
◦
윈도우 HDC, HBRUSH 사용하기
▪
로우 레벨에 직접 접근하는 것(윈도우 수정을 직접 하는 것 등) → 잘못 사용하면 메모리 침범에 대한 위험이 있으므로 제한
▪
HDC
▪
HBRUSH
▪
자주 사용하는 GDI 오브젝트들을 미리 DC안에 만들어 두었고, 그 오브젝트를 스톡 오브젝트라고 한다
◦
HDC 그리기 연습
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: 여기에 hdc를 사용하는 그리기 코드를 추가합니다...
Rectangle(hdc, 200, 200, 300, 300);
// 블루 브러쉬 생성
HBRUSH blueBrush = CreateSolidBrush(RGB(0, 0, 255));
// 블루 브러쉬 사용
HBRUSH oldBrush = (HBRUSH)SelectObject(hdc, blueBrush);
Rectangle(hdc, 100, 100, 200, 200);
// 레드 브러쉬 생성
HBRUSH redBrush = CreateSolidBrush(RGB(255, 0, 0));
// 레드 브러쉬로 변경 , old brush는 blue brush가
oldBrush = (HBRUSH)SelectObject(hdc, redBrush);
Rectangle(hdc, 300, 300, 400, 400);
SelectObject(hdc, oldBrush);
// Ellipse(hdc, 500, 500, 800, 800)
DeleteObject(blueBrush);
DeleteObject(redBrush);
EndPaint(hWnd, &ps);
}
break;
C++
복사
◦
Application 클래스 구성
▪
게임 구동 원리
•
update
•
render
•
반복
▪
Get Message
•
게임은 가만히 있어도 끊임없이 움직인다
•
그래서 Peek Message 사용
◦
네모 움직이기
◦
정적 라이브러리 vs 동적 라이브러리
▪
수많은 소스코드를 라이브러리화 시켜서 재사용
▪
정적 라이브러리는 컴파일/빌드할 때 합쳐져서 생성 (.lib)
•
버전이 바뀌면 새로 빌드
▪
동적 라이브러리 (.dll) 는 따로 파일이 존재
•
버전이 바뀌면 파일을 바꿔치기
◦
공유 소스 프로젝트
▪
참조용
▪
메인 엔진 → 정적 라이브러리 참조 → 공유 소스 참조
•
과제
◦
네모 움직이기 구현
◦
application.run()함수부터 한줄 한줄 실행하여 실행 흐름 파악