MFC
출처 : http://tong.nate.com/gayanim/27925620

GetWindowRect
윈도우의 현재 위치와 크기를 구해준다. (left, top)은 윈도우의 현재 좌상단 위치를 나타내는데 이 좌표는 전체 화면을 기준으로 한 좌표이다. (right, bottom)은 윈도우의 우하단 위치를 나타내며 역시 전체 화면을 기준으로 한 좌표이다. 윈도우의 현재 크기(폭과 높이)를 구하고 싶으면 right-left, bottom-top을 계산하면 된다.

GetClientRect
윈도우의 작업영역 크기를 계산해 준다. 크기만 계산해 주기 때문에 좌상단(left, top)값은 항상 0,0이며 우하단 좌표(right, bottom)가 곧 윈도우의 크기를 나타낸다. 작업영역이란 윈도우의 타이틀바, 스크롤 바, 경계선, 메뉴 등을 제외한 영역이며 윈도우가 그리기를 하는 대상 영역이다

 

ScreenToClient
화면의 원점을 기준으로 하는 좌표 lpPoint를 hWnd의 작업 영역을 기준으로 하는 좌표로 변환한다. hWnd윈도우의 작업 영역 원점의 화면 좌표가 cx, cy일 때 lpPoint는 lpPoint.x - cx, lpPoint - cy로 변환된다. GetCursorPos, MoveWindow, GetWindowRect 등과 같이 화면 좌표를 리턴하는 함수로부터 작업 영역의 좌표로 변환하고자 할 때 이 함수를 사용한다.


사용자 삽입 이미지
<맵툴 프로그램>

사용자 삽입 이미지
<위 맵툴로 만든 타일 일부분>


이번에 완수와 거산이란 Wipi 모바일 게임을 만들때 사용한 맵툴 프로그램입니다.
여기서 조금더 다듬어서 2D 공용 맵툴을 만들라는 교수님 지시에 따라 바꿀려고 하는데
과연 얼마만큼 바뀔지는 >_< ;;;

나중에 저기서 3D까지 확장 할려고 하니 마구 짜버린 저 맵툴론 한계가 있는거 같습니다.
뭐.. 구조 변경할겸... 여러가지 만질겸

아.. 저 맵툴의 사용 방법은 이 ppt 로 정리 되어있습니다. >_<..
가볍게 2D게임 맵툴은 이런식으로 만든다고 생각하시면 될꺼 같습니다.
MFC
 

C++로 게임 개발을 할 때 몇몇 사람들이 MFC를 사용하기로 결정했다. 늘 저는 ASSERT(), VERIFY(), TRACE() 매크로들의 유익함을 발견한다. 그래서 윈도우 플랫폼을 위한 어떤 프로젝트에서든지 작업할 수 있도록 자신의 버전을 만들기로 했다.


ASSERT()는 값이 0이면 실행을 멈추도록 하기 위해 매개 변수을 평가한다. 릴리즈 모드에서는 assert가 아무 것도 전개되지 않도록 해야한다.


VERIFY()는 릴리즈 모드에서 매개 변수를 전개하도록 되어 있는 것을 제외하고는 ASSERT()와 아주 유사하다.
ASSERT()는 어떠한 함수 호출도 포함되어 있지 않는 표현으로 사용되어야만 한다. 함수 호출을 포함하는 표현을 위해 VERIFY()를 사용해야만 하고 그렇게 해서 함수 호출은 릴리즈 모드에서도 보전된다.


TRACE()는 디버그 윈도우에 출력되는 것을 제외하고는 printf()의 대응물이다. 릴리즈 모드에서는 TRACE() 또한 아무것도 전개하면 안된다.


세 개의 매크로들 중 어떤 것도 릴리즈 모드에서 어떤 런타임 벌점을 의미하지 않는다. 그 매크로들은 미리 정의된 _DEBUG 매크로를 사용해서 디버그 모드와 릴리즈 모드 사이를 구별한다. 이것은 Microsoft Visual C++에 특정적이다. 만약 다른 몇몇 다른 컴파일러를 사용하고 있다면 적절한 매크로를 사용해야만 할 것이다. 


ASSERT(), VERIFY(), TRACE()를 지원하는데 필요한 두 파일이 있다. 그것은 debug.h와 debug.cpp이다. 프로젝트의 몇몇 메인 헤더에 debug.h를 추가해야만 한다. 그것은 자신 안에 어떤 파일도 포함하지 않기 때문에 순환 포함(recurrent inclusion)에 의해 더럽혀지지 않는다. 또한 프로젝트의 소스 파일에 debug.cpp를 더해야만 한다.


Discuss this article in the forums
Date this article was posted to GameDev.net: 7/23/2002
(Note that this date does not necessarily correspond to the date the article was written)

See Also: Sweet Snippets


원문 : http://www.gamedev.net/reference/articles/article1846.asp

'C/C++언어' 카테고리의 다른 글

쉬프트 연산과 곱셈  (0) 2008.03.26
[리눅스프로그래밍] makefile  (1) 2008.03.07
ASSERT(), VERIFY(), TRACE()  (0) 2008.03.04
템플릿 사용한 max 만들기  (0) 2008.03.03
<이클립스 디버그 방법>  (0) 2008.01.28
printf 문을 만들어보자  (0) 2008.01.28
MFC
사용자 삽입 이미지

간혹 이런 메시지가 뜨면 당혹스럽기도하다.
대부분 이런 메시지는 MFC가 만드는 자동 소스 생성 부분 (즉 위져드 부분)에서 에러난다.
무시하고 진행해도 되지만.. 그 많은 양의 소스를 일일이 치는건 역시 무리다..

이 문제를 해결하기위해 처음엔 Visual Studio 자체를 지웠다가 설치해 봤다.
하지만 문제는 해결되지 않았다.. 무엇이 문제일까 하다가..

역시나 네이버.. orz

문제는 internet Explorer 이였다.. 이참에 걍 불여우로 바꿔볼까 ...
하여간 문제 해결은 의외로 간단하였다.
사용자 삽입 이미지

익스플로어 기본설정을 원래대로 초기화 한뒤
스크립트 디버깅 사용안함부분이 체크되었는지 확인한뒤
사용자 삽입 이미지
좀 내리다 보면 UTF-8 URL 보내기가 체크되어있는데 이걸 해제한다.

그럼 문제없이 뜬다

+ Recent posts