WinAPI 56-2 과제

CJB_ny·2022년 10월 3일
1

WinAPI

목록 보기
59/79
post-thumbnail

현재 ButtonUI클래스에서 Texture포인터로 멤버로 들고 있게 한다음

render함수 오버로딩해서 UI버튼만 render할 수 있도록 구현함

결과

중간중간 알아간점

Tile에 구현해놓은 render, Object를 상속받는 클래스들의 render를 보면서 참고를 했기 때문에 크게 어려운점은 없었는데

ButtonUI에서의 TransparentBlt 함수의 인자값을 줄 떄 조금 문제가 있었다.

		TransparentBlt
		(
			dc,
			int(finalPos._x),
			int(finalPos._y),
			int(BUTTON_SIZE),
			int(BUTTON_SIZE),
			p_buttonTexture->GetDC(),
			curCol * BUTTON_SIZE,
			curRow * BUTTON_SIZE,
			BUTTON_SIZE, BUTTON_SIZE,
			RGB(255, 0, 255)
		);
        

인자를 넣어 줄 때 GetPos를 들고와서 dc 다음의 인자로 넘겨주었는데 이게 아니라

finalPos를 가지고 와서 인자로 넘겨주어야 render할 때 정상적으로 동작을 한다.

그리고 Tile을 참고하여 크게 시간이 걸리지는 않았지만

이것또한 Tile소스 파일처럼 하나의 파일안에 여러개의 버튼이 들어있기 때문에

행과 열을 계산을 해서 원하는 파일을 가져왔다.

수정한점

버튼의 목적에 따라 버튼 이미지 파일은 하나이지만 다른 텍스쳐를 불러와야하기 때문에

이런식으로 인자를 받는 생성자를 만들어서 기본생성자 생성을 막아 두었다.

그래서 ButtonUI객체를 만들때는 인자를 하나받는 생성자를 통해서 생성할 수 밖에 없는데

이를 ToolScene에서 생성할 때

이런식으로 미리정의해둔 정수값을 통해

어떠한 버튼인지 인덱스 번호를 넣어주도록 설계를 하였다.

인자로 들어온 값에 따라

ButtonUI클래스의 render함수안에서

인자로 들어온값을 행과 열로 나누어서

이곳에서 어떠한 이미지 인자 가로 72, 세로 72 px로 잘라잘라 접근을 하여 불러올 수 있도록 수정하였다.

또한 마우스가 올라갈 때를 확인하기 위해서 UI 부모클래스의 GetIsMouseOn 함수를 파주어서

상속받는 클래스에서도 마우스가 올라가있는지 아닌지를 확인할 수 있도록 함.

더 구현해야할 부분

PanelUI에다가 텍스처의 이미지를 띄울 수 있도록 하고

PanelUI에 올라간 이미지를 클릭을 하고 Tile을 눌렀을 때 해당 타일이 이미지가 UI에서 클릭한

이미지로 변경이 되도록 수정해야한다.

    
profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글