탭 컨트롤은 단독으로 사용하지 않고 여러 대화 상자와 연동하여 사용하는 컨트롤 윈도우이다. 여러 윈도우가 똑같은 위치에 겹겹이 중복되어 있을 때 필요한 윈도우만 화면에 보이게 하는 것이 탭 컨트롤의 주요 기능이다. 기본적으로 탭 컨트롤 이외에 같은 크기의 여러 윈도우가 필요하며, 대화 상자를 이용할 때는 대화 상자를 여럿 만들어야 한다. 다음은 예제 소스다.
리스트컨트롤과 굉장히 유사하다.
--------------헤더파일--------------------------------------
// 생성입니다.
public:
CTabDemoDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
CFormOne m_formOne;
CFormSecond m_formSecond;
CFormThird m_formThird;
CWnd* m_pwndShow;
--OnInitDialog()-----------------------------------------------
CBitmap Bmp;
Bmp.LoadBitmap(IDB_TabImageList);
static CImageList ImgList;
ImgList.Create(16, 16, ILC_COLOR24 | ILC_MASK, 7, 0);
ImgList.Add(&Bmp, RGB(192, 192, 192));
m_Tab.SetImageList(&ImgList);
CString strTmp = _T("");
for(int i = 0; i < 7; i++)
{
strTmp.Format(_T("%dth Tab"), i);
m_Tab.InsertItem(i, strTmp, i);
}
CRect Rect;
m_Tab.GetClientRect(&Rect);
m_formOne.Create(IDD_Form_One, &m_Tab);
m_formOne.SetWindowPos(NULL, 5, 25,
Rect.Width() - 10, Rect.Height() - 30,
SWP_SHOWWINDOW | SWP_NOZORDER);
m_pwndShow = &m_formOne;
m_formSecond.Create(IDD_Form_Second, &m_Tab);
m_formSecond.SetWindowPos(NULL, 5, 25,
Rect.Width() - 10, Rect.Height() - 30,
SWP_NOZORDER);
m_formThird.Create(IDD_Form_Third, &m_Tab);
m_formThird.SetWindowPos(NULL, 5, 25,
Rect.Width() - 10, Rect.Height() - 30,
SWP_NOZORDER);
void CTabDemoDlg::OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
{
if(m_pwndShow != NULL)
{
m_pwndShow->ShowWindow(SW_HIDE);
m_pwndShow = NULL;
}
int nIndex = m_Tab.GetCurSel();
switch(nIndex)
{
case 0:
m_formOne.ShowWindow(SW_SHOW);
m_pwndShow = &m_formOne;
break;
case 1:
m_formSecond.ShowWindow(SW_SHOW);
m_pwndShow = &m_formSecond;
break;
case 2:
m_formThird.ShowWindow(SW_SHOW);
m_pwndShow = &m_formThird;
break;
}
*pResult = 0;
}
----------------------------------------------------------------------------
'Windows > MFC' 카테고리의 다른 글
다중 뷰 - 동적 분할 윈도우와 정적 분할 윈도우 (0) | 2011.11.19 |
---|---|
Modal, Modeless 대화상자, 공용 대화상자 (0) | 2011.11.19 |
드래그 앤 드롭 ( Drag-And-Drop) (0) | 2011.11.18 |
트리 컨트롤 ( CTreeCtrl ) (0) | 2011.11.18 |
이미지 프로세싱 (0) | 2011.11.15 |