728x90
SMALL
1. 도구상자에서 Tab Control을 선택하고 다이얼로그에 넣은 후 ID를 정해준다.
2. 리소스 뷰에서 각 탭의 화면으로 사용될 다이얼로그를 추가한다.
3. 이렇게 생성된 다이얼로그의 ID를 변경해주고, 스타일을 Popup→Child, 시스템메뉴 True→False, 제목 표시줄True→False로 변경해준다.
4. 다이얼로그의 속성을 수정했다면 클래스추가를 통해 해당 다이얼로그의 클래스(Class)를 추가해준다.
5. 2~4번까지의 방법을 통해 탭에서 사용할 다이얼로그를 추가해준다. 본 예제에서는 4개를 사용할 예정이므로 4개를 추가한다.
6. 다시 Tab Control이 생성된 다이얼로그로 돌아가서 클래스 마법사창을 띄운다.
7. 클래스 마법사에서 멤버 변수 탭으로 이동한 후 만든 Tab Control에 제어 변수를 추가해준다.
8. 클래스마법사의 명령 탭으로 이동한 후 Tab Control의 ID를 선택하고 메세지 탭에서 TCN_SELCHANGE를 선택하고 처리기 추가 버튼을 눌러 메세지 함수를(이벤트) 추가한다.
SMALL
9. 이제 Tab Control이 있는 클래스의 헤더 파일로 이동해서 Tab Control의 화면으로 사용되기 위해 만들었던 클래스들을 모두 Include 해주고, 각 클래스의 변수를 만든다.
#include "DlgTab1.h"
#include "DlgTab2.h"
#include "DlgTab3.h"
#include "DlgTab4.h"
CDlgTab1* dlg1;
CDlgTab2* dlg2;
CDlgTab3* dlg3;
CDlgTab4* dlg4;
10. 이번에는 소스파일로 이동해서 OnInitDialog(가상함수)에 밑의 코드를 추가해준다. 만약 가상함수가 없다면 클래스 마법사→가상함수 탭 클릭→OnInitDialog선택→함수 추가를 하면 된다.
CRect rect;
m_tab.GetWindowRect(rect);
m_tab.InsertItem(0, "탭1"); // 탭의 이름 설정
m_tab.InsertItem(1, "탭2");
m_tab.InsertItem(2, "탭3");
m_tab.InsertItem(3, "탭4");
m_tab.SetCurSel(0);
dlg1 = new CDlgTab1;
dlg1->Create(IDD_DIALOG_TAB1, &m_tab);
dlg1->MoveWindow(0, 20, rect.Width(), rect.Height());
dlg1->ShowWindow(SW_SHOW); // 첫번째 Tab을 SHOW로 하고 나머지는 HIDE
dlg2 = new CDlgTab2;
dlg2->Create(IDD_DIALOG_TAB2, &m_tab);
dlg2->MoveWindow(0, 20, rect.Width(), rect.Height());
dlg2->ShowWindow(SW_HIDE);
dlg3 = new CDlgTab3;
dlg3->Create(IDD_DIALOG_TAB3, &m_tab);
dlg3->MoveWindow(0, 20, rect.Width(), rect.Height());
dlg3->ShowWindow(SW_HIDE);
dlg4 = new CDlgTab4;
dlg4->Create(IDD_DIALOG_TAB4, &m_tab);
dlg4->MoveWindow(0, 20, rect.Width(), rect.Height());
dlg4->ShowWindow(SW_HIDE);
11. 마지막으로 8번에서 추가했던 Tab Control의 TCN_SELCHANGE 메세지 함수에 다음과 같은 코드를 넣으면 된다.(본 예제에서 함수명은 OnSelchangeTabMain이다.)
if (IDC_TAB_MAIN == pNMHDR->idFrom) { // Tab Control ID명
int select = m_tab.GetCurSel();
switch (select) {
case 0:
dlg1->ShowWindow(SW_SHOW);
dlg2->ShowWindow(SW_HIDE);
dlg3->ShowWindow(SW_HIDE);
dlg4->ShowWindow(SW_HIDE);
break;
case 1:
dlg1->ShowWindow(SW_HIDE);
dlg2->ShowWindow(SW_SHOW);
dlg3->ShowWindow(SW_HIDE);
dlg4->ShowWindow(SW_HIDE);
break;
case 2:
dlg1->ShowWindow(SW_HIDE);
dlg2->ShowWindow(SW_HIDE);
dlg3->ShowWindow(SW_SHOW);
dlg4->ShowWindow(SW_HIDE);
break;
case 3:
dlg1->ShowWindow(SW_HIDE);
dlg2->ShowWindow(SW_HIDE);
dlg3->ShowWindow(SW_HIDE);
dlg4->ShowWindow(SW_SHOW);
break;
}
}
12. 실행화면
728x90
LIST
'C++ > MFC' 카테고리의 다른 글
[MFC] 메모장(에디터 프로그램) (0) | 2021.08.24 |
---|---|
[MFC] 파일 및 폴더 검색기 (2) | 2021.08.23 |
[MFC] C, C++ 컴파일러 오류 C4996 해결방법 (0) | 2021.08.20 |
[MFC] C++ 컴파일러 오류 C2664 두가지 해결방법 (0) | 2021.08.20 |
[MFC]Visual Studio 2019에서 .exe 파일 만드는 방법 및 생성위치(배포용 실행파일 생성) (0) | 2021.06.21 |