CTab을 이용한 탭 구현 방법

– 대화상자 기반 프로젝트라고 가정…

1. 도구상자에서 탭 컨트롤을 대화상자에 추가한 후, 컨트롤 변수로 생성한다.

CTabCtrl m_Tab;
2. 탭 컨트롤을 초기화한다.
m_Tab.InsertItem(0, _T("TAB1"));
m_Tab.InsertItem(1, _T("TAB2"));
3. 탭 컨트롤 안에 들어갈 실제 탭 페이지를 추가한다.
탭 페이지는 새로운 대화상자를 삽입하고 속성을 Border(NONE), Style(Child)로 설정한다.
4. 추가한 탭 페이지의 클래스를 생성한 후, 탭 컨트롤에 선언한다.
이때 탭 페이지의 상위 클래스는 CDialog로 한다.
CTab1 m_subTab1;
CTab1 m_subTab2;
5. 탭 페이지를 생성 및 초기화한다.
CRect rt;
m_Tab.GetWindowRect(&rt);
ScreenToClient(&rt);
rt.top +=30;
rt.left += 5;
rt.right -= 5;
rt.bottom -= 5;

m_subTab1.Create(CTab1::IDD, this);
m_subTab1.MoveWindow(rt);
m_subTab1.ShowWindow(SW_SHOW);

m_subTab2.Create(CTab2::IDD, this);
m_subTab2.MoveWindow(rt);
6. 실제 탭 버튼이 클릭되었을 때, 탭 페이지의 전환을 위한 코드를 추가한다.
void CMy0dDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
int nSelItemNo = 0;
nSelItemNo = m_Tab.GetCurSel();

if (nSelItemNo == 0)
{
m_subTab1.ShowWindow(SW_SHOW);
m_subTab2.ShowWindow(SW_HIDE);
} else if (nSelItemNo == 1) {
m_subTab1.ShowWindow(SW_HIDE);
m_subTab2.ShowWindow(SW_SHOW);
}

*pResult = 0;
}
* 완료하고 나서 보면 탭 페이지이의 배경색이 테마가 적용된 경우 일치하지 않는 문제가 발생한다. 이 문제는 윈도우의 테마 정보를 읽어와서 실제 탭 페이지의 배경색을 구해야 한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다