CTab을 이용한 탭 구현 방법 DarkKaiser, 2010년 3월 27일2023년 9월 6일 – 대화상자 기반 프로젝트라고 가정… 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; } * 완료하고 나서 보면 탭 페이지이의 배경색이 테마가 적용된 경우 일치하지 않는 문제가 발생한다. 이 문제는 윈도우의 테마 정보를 읽어와서 실제 탭 페이지의 배경색을 구해야 한다. C/C++/VC++ TAB탭