Tile

김태훈·2024년 1월 11일
0

Win32API

목록 보기
19/24
post-custom-banner

Tile

출력위치를 좌상단
본인의 위치도 좌상단

2의 제곱 단위픽셀을 타일로 사용하는것이 좋다

32bit 8*6의 타일 이미즈를 사용 한다고 하면

첫번째부터 오른쪽으로 차례로 인덱스가 매겨지고

행과 열 계산 가능
인덱스/ (열의 최대 개수인 8) = 몇번째 행
인덱스 % (열 최대갯수8) =몇번째 열

타일 이미즈 전체를 픽셀 단위로 나위어 인덱스화 화였다.

값을 입력받는 ui
값을 입력받은 후 tile 생성

윈도우 처리 방식

모달
모든 주목을 하나의 윈도우로,다이얼 로그 또한 모달방식

메인 처리기에서 메세지를 받고 크레에이트 윈도우를 통해 하나 만듦
해당 윈도우 처리기 실행, 엔드 메시지 받으면 그 윈도우의 커널 오브젝트
제거하면서 그 윈도우 제거
즉 이 윈도우가 return을 하지않으면 다른 윈도우들은 실행이 안됨

모달리스-실시간 윈도우 메세지 받아들이고 처리

크레에이트 윈도우 여러개 한 후, 
메인 cpp의 메세지 처리 루프에 각 윈도우 메세지가 큐에 쌓일 것이고
하나씩 꺼내서 해당 하는 윈도우 주소에 메세지 전달
메세지 들어오면 해당 윈도우의 procedure함수에서 처리 	

리소스 뷰,리소스 헤더파일

리소스뷰에서 다이얼로그를 하나 만든다면
리소스 헤더파일에 만든거나 변경된 아이디가 #define코드가 추가 됨
main cpp이 리소스 헤더파일을 참조 하고 있기때문에 메세지 처리 루프에서 인식 할수 있음

리소스 헤더 파일과 리소스뷰를 동시에 열수 없음
헤더파일을 본다는 것은 헤더파일의 문자열을 메모리에 올리는건데 리소스뷰를 연다는 것은
원본은 변경 시킬 수 있다는 것이기 때문에 괴리가 생겨서 막아 놓았음

박스의 버튼에도 아이디가 있다
버튼도 엄밀히 따지면 윈도우이다. 자식 윈도우와 같은 개념.

DialogBox

윈도우 등록하는 곳에 윈도우 메뉴바 등록 한것 처럼

윈도우이며 모달 방식

메인 처리기에서 메시지를 받은 후

해당 윈도우 이동 한후 마지막 인자의 함수 실행

리턴값으로 마지막인자의 엔드 다이얼로그 메세지를받을수 있음

위의 캡처는 해당 메세지가 호출된 윈도우의 처리기 함수(메인 윈도우)

여기서 okay or cancel을 리턴

MAKEINTRESOURCE의 매개변수 문자들이 내가 만든 다이얼로그의 아이디이다

메인 처리기에서 리턴된 반환값을 받고 처리 할수도 있다 라는 것만 알아두기

다이얼로그 리소스뷰에서의 속성에 숫자를 true로 하면 숫자만 받게 한다

다이얼로그에서 입력받은 x,y count수 만큼 타일 생성하기

GetDigItemInt
실제 입력된것은 문자열이지만 이것을 숫자로 바꿔주는 것

INT_PTR CALLBACK TileCountProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
 if (LOWORD(wParam) == IDOK)//타일 x,y갯수들의 숫자를 입력하고 ok눌렀을때 
 {
	 UINT iXCount	=GetDlgItemInt(hDlg, IDC_EDIT1, nullptr, false);//적은 숫자 받기
	 UINT iYCount	=GetDlgItemInt(hDlg, IDC_EDIT2, nullptr, false);
	CScene*pCurScene= CSceneMgr::GetInst()->Get_pCurScene();//현재씬 받기
	CScene_Tool* pSceneTool = dynamic_cast<CScene_Tool*>(pCurScene);//씬툴로 다운 캐스팅
	assert(pSceneTool);//sceen tool로 다운캐스팅 실패면 assert
	pSceneTool->DeleteGroup(GROUP_TYPE::Tile);//원래 있던 타일 초기화
	pSceneTool->CreateTile(iXCount, iYCount);//입력받은 수 만큼 타일 만들기
	EndDialog(hDlg, LOWORD(wParam));

	return (INT_PTR)TRUE;
 }

}

이 CALLBACK형 함수를 메인 cpp의 윈도우 proc함수에서
다이얼로그 3번째 인자로 넣어주면 메뉴 타이틀에서 실행 가능하다

profile
복습을 위한 핵심 내용 및 모작
post-custom-banner

0개의 댓글