오늘 공부한 내용은 MFC 에서 Tab Control을 이용한 Dialog 만들기!
네이버 블로그에 정리 잘 해 두신 분이 있어서 그분 블로그 보고 구현 해 보았다.
먼저 다이얼로그 베이스 프로젝트에서 다이얼로그에 tabControl 을 하나 만들어 준다.
그후에 TabControl에 변수를 추가해 준다.
변수이름은 임의로 설정하고 그 외의 설정 사항은 기본 사항을 이용한다.
변수형식 - CTabCtrl
컨트롤 변수 사용
변수를 생성 하였으면
프로젝트명Dlg.cpp 파일에서 OnInitDialog 함수에서 탭 추가를 해줘야 한다.
CString 을이용해 탭 이름을 만들고 InsertItem 함수를 이용해서 탭에 추가해준다.
이제 탭은 추가가 되었으나 그 탭들은 모두 비어 있는 상태이다.
빈 탭에 넣어줄 서브다이얼로그를 생성해준다.
위에서 3개의 탭을 생성했으니 subDialog 도 3개 생성을 해준다
이때 중요한 점은 ID를 기억해 둬야 한다는 점과
Border - None
Style - Child
이 두가지 설정을 해줘야 한다.
이 설정이 없을경우 탭 안에서 제목표시줄이 생기고 심지어 이동까지 가능해 지므로 설정 해주기를 권장.
3개의 subDialog를 생성했으면 아래와 같이 각각 Dialog에 클래스추가를 해준다.
클래스를 모두 생성했으면
프로젝트명Dlg.h 파일에서 클래스 해더파일을 모두 include 해주고
해당클래스변수를 하나씩 생성 해 준다.
여기에 윈도우 포인터변수도 하나 추가를 해 줘야한다고한다..
(아직 자세히 모르니 일단.. 추가하자..)
새로 추가한 윈도우 변수는 cpp파일에서 초기값 NULL을 설정해주자.
이어서 cpp파일의 OnInitDialog 함수에 이어서 아래와 같은 내용을 추가해준다.
이때 Rect 는 탭의 크기를 받아오기때문에 탭 내부에 서브탭을 넣기 위해서는 적절하게 크기 조절을 해준다.
(여기서는 10과 30의 값을 이용.)
나머지 파라미터는 .. 음.. 안찾아봤다..
그리고 주의해야할 점이 SWP_SHOWWINDOW 옵션은 첫번째 항에만 추가를 해줘야 한다는데..
이것도... 테스트도... 검색도 안해봤다... 일단 그렇단다..
여기까지 왔으면 탭이 나오고 그 탭안에 서브탭이 보일것이다..
But 그러나... 탭이 바뀌어도 서브탭은 변하지 않고..
이문제를 해결하기위해 다이얼로그 tabcontrol을 클릭하고
컨트롤 이벤트(번개모양) 창에서
TCN_SELCHANGE 항목을 누르고 처리 함수를 추가 해준다.
프로퍼티 창의 너비를 좁게 해놓을 경우 SELCHANGE 와 SELCHANGEING 은 앞에는 똑같이 보이므로
햇갈리지 않도록 주의한다..
잘못만들면 반응이 한탬포씩 늦어지더라..
여튼 아래와 같이 이벤트 처리 함수를 만들어 주고..
이벤트 처리 함수 내부에 아래와 같은 코드를 추가 해 준다.
이 코드를 추가해 주면 탭간 이동시에 서브탭도 같이 변하는 것을 알 수 있다.
이상 탭컨트롤 생성 실습 끝..
이건 내가 나중에 다시보려고 기록 해 둔것이니
보다 자세한 설명을 보고싶다면.. 내가 참고한 아래 블로그에서 다시 보기..
http://blog.naver.com/sangyun9844?Redirect=Log&logNo=30093087459
'Programming > C, C++, MFC' 카테고리의 다른 글
CFileDialog 다중파일 선택하기 (0) | 2013.06.14 |
---|---|
#define 에 관한 내용 (0) | 2013.06.07 |
MFC Picture Control 에 BMP 파일 출력하기 (1) | 2013.04.02 |
MFC 에서 wav 파일 재생하기 (1) | 2013.04.02 |
[Function] dialog 에 FPS 표시하기 (0) | 2013.04.02 |