먼저 UnitTool(유닛의 정보가 들어가있는)로 사용할 클래스를 하나와
UnitTool 창을 띄워줄 클래스(MyFormView) 하나를 만들어준다.
MyFormView의 기본 클래스는 CFormView로 지정하고,
UnitTool의 기본 클래스는 CDialog로 지정해준다.

클래스를 만들고나서 Ctrl + Alt + E를 눌러서 리소스 뷰를 띄워준다.
그 다음 Dialog 폴더에 있는 IDD_UNITTOOL을 더블클릭하면 다음과 같은 화면이 나온다.

여기까지 완료하였으면 Ctrl + Alt + X를 눌러서 도구 상자를 띄우고
도구 상자 안에있는 Button을 드래그해서 UNITTOOL 뷰에 옮긴다.

우리가 도구 상자에서 사용할 것은 몇개 되지 않기때문에 사용할 도구들의 의미에 대해서만 설명하려고한다.
Button : 버튼
Check Box : 체크 박스
Edit Control : 입력란
List Box : 정보를 표시해줄 공간
Radio Button : 동그란 체크 박스
Static Text
-> 아래에 Static으로 적혀있는 Text 도구인데 우측에 있는 입력란에 어떤 정보가 들어갈지 모른다.
-> 우측에 어떠한 정보가 들어가 있는지 알려주기 위해 표시하는 역할

도구의 이름은 한 번만 클릭하고 타자를 입력해서 변경하면 된다.
여기서 주의해야 할 점은 만약 더블 클릭을 하게 되면, 버튼에 대한 이벤트 처리기 함수가 자동으로 생성되기 때문에
원하지 않은 이벤트 처리기 함수가 추가될 경우 해당 함수가 추가된 클래스에 찾아가서
관련된 함수들을 전부 지워줘야되는 번거로움이 생기므로 주의하는 것이 좋다.
일단 Button1로 되어있는 이름을 Add라고 지어준다.

그 다음 해당 버튼이 클릭되어 있는 상태에서 오른쪽 마우스를 클릭하여 이벤트 처리기 추가를 클릭한다.
그럼 다음과 같은 창이 나올 것이다.

여기서 메시지 형식에 BN_CLIKED라고 나와있는데 이것은 버튼을 클릭 했을 때 이벤트를 발생 시킨다는 의미이다.
클래스 목록은 이벤트 처리기 함수를 추가하고싶은 클래스를 선택하는 곳이다.
함수 처리기 이름은 개인이 변경하고 싶은 함수명이 없으면 자동으로 기본 값으로 세팅이 된다.
변경할 것이 없다면 위에 상태에서 추가를 눌러준다.
추가를 누르게되면 다음과 같이 UnitTool 클래스에 함수가 추가된 것을 볼 수 있다.

버튼이 제대로 동작하는지 테스트를 해보자


정상적으로 나온 것을 확인할 수 있다.
이제 UnitTool 창을 MyFormView의 버튼을 통해서 나오도록 해보려고 한다.
우선 MyFormView의 버튼이 화면에 나오게 해야한다.
이전에 미니맵을 생성했을 때 사용한 Splitter를 이용해서 창 분할을 하였는데,
똑같은 방식으로 분할하여 그 위치에 표시되도록 한다.
MainFrame 클래스 -> OnCreateClient 함수

여기까지 하였으면 다음과 같이 정상적으로 버튼이 화면에 표시되는 것을 볼 수 있다.

이제 클래스뷰에서 MyFormView 클래스를 클릭하고 Alt + Enter를 눌러서 속성에 들어간 후
OnInitialUpdate 함수를 재정의해준다.


그리고 MyFormView 헤더로 가서 CUnitTool 변수를 만들어준다.

그 후에 만들어준 이벤트 처리기 함수에 다음과 같이 정의한다.

여기서 ShowWindow는 MyFormView에서 만든 버튼을 클릭했을 때 UnitTool의 창을 띄워주기 위해 사용하는 함수이다.
OnInitialUpdate 함수에서 Create함수는 인자에 들어간 ID로 만들어져 있는 클래스의 창을 만들어주는 역할을 한다.
아이디는 리소스 뷰에서 다음과 같이 확인할 수 있다.

여기까지 했으면 MyFormView에서 만든 버튼을 클릭 했을 때 정상적으로 ToolView의 창이 나오는 것을 확인할 수 있다.

이 다음은 UnitTool Part2에서 이어서 작성하도록하겠다.
'Programming > MFC' 카테고리의 다른 글
MFC - UnitTool Part2(리스트에 정보 추가 및 삭제) (0) | 2020.12.05 |
---|---|
MFC - 미니맵 (1) | 2020.11.29 |
MFC - 기본 이론 , 계층 구조 (0) | 2020.11.29 |
MFC - 타일 픽킹(내적) (0) | 2020.11.29 |
MFC - 타일 픽킹(직선의 방정식) (0) | 2020.11.25 |