본문 바로가기

Programming/MFC

[MFC] Tab Control 사용하기!

1. Tab 여러개 만들기
MFC에서 탭을 생성하게 되면 소스코드로 탭의 이름 및 개수를 지정하여 주어야지만
탭을 사용할수 있습니다.  저는 이니셜라이징 하는 부분을 OnInitDialog라는 함수에서 탭의
이름과 개수를 지정해 주었습니다.

 
위의 붉은 테두리안에 아래의 소스 코드를 집어넣으시면  Map Control Setting이라는 3개의 탭이
 생성됩니다.

TCITEM item; 
 CString szTabName[] = {_T("Map"), _T("Control"), _T("Setting")}; // Named TabMenu

item.mask = TCIF_TEXT;

 for(int i = 0 ; i < sizeof(szTabName) / sizeof(CString) ; ++i)
 {
  item.pszText   = (LPWSTR)(LPCWSTR)szTabName[i];
  m_CtrlTab_Main.InsertItem(i,&item);
 }

2. Tab Control 사용법

이제 각각의 탭에서 컨트롤들을 사용하는 방법에 대해 설명하겠습니다.
C#에서는 컨트롤러의 속성에서 탭의 개수와 이름 그리고 각탭이 독립적으로 되어있어 편리하지만,
MFC에서는 지원하지 않기때문에 일일히 코드로 적어줘야하는 단점이 있습니다.


위 처럼 각탭에서 사용할 컨트롤들을 잘(?) 배치하신다음 해당 탭이 선택될시 마다, 그탭에서 사용하는 컨트롤들은 활성화시키고, 쓰지않는 컨트롤 변수들은 닫아주시면 되는것 입니다.
탭의 활성 여부는 아래의 위치에서 해주시면 됩니다.
 
int iSelect = m_CtrlTab_Main.GetCurSel();       // Tab의 인덱스를 얻어옵니다.
                                                                 // 여기서 인덱스 순서로서는 탭메뉴
                                                                 // 좌측에 있는것 부터 0,1,2,3.....가 됩니다.

switch ( iSelect )
 {
 case 0:
   // 해당 탭의 선택시 사용할 컨트롤은 활성화 해주시고 사용안하는 컨트롤들은 닫아주시면
  //  됩니다.
    break;
  case 1:
     
   break;
}

Tip) 각 컨트롤의 활성화 및 닫기는 클래스의 맴버함수로 구현되어있습니다.
       컨트롤별수.ShowWindow(int nCmdWindow)에서
       매개변수를 SW_SHOW  : 해당 컨트롤을 활성화 시킵니다.
                       SW_HIDE    :  해당 컨트롤을 닫습니다.(숨기는거죠!)
       넣어주시면 되는것입니다.

3. 결과
위의대로 하면 Map, Control, Setting 3개의 탭 매뉴와 각 탭마다 사용하는 컨트롤들이 잘 정리되어있을 것입니다.


'Programming > MFC' 카테고리의 다른 글

[MFC] Console 생성하기  (0) 2012.10.21
[MFC] File Drag&Drop  (0) 2012.09.21