탭 컨트롤을 좀 더 이쁘게 만들고 싶어서 검색하다보니 이런 자료를 찾았다.
꽤 예전에 만들어진 것 같은데...
역시 능력자는 많은가보다.
화면에서 보는 것과 같이 자유롭게 커스터마이징 가능하도록 Tab Control을 상속/구현하였습니다.
아직 탭/보더가 스킨 이미지로 구현된 컨트롤은 아닙니다.
현재는 GDI/GDI+ 를 이용한 직접 그리는 형태가 되겠습니다.
개발 환경
- Window XP : Intel X86 32bit
- Visual Studio 2005 : MFC 8.0 Unmanaged C++
현재 구현된 탭 스타일은 아래와 같습니다.
1. 버튼 스타일
- 가로/세로 스타일이 가능함
- 단, 세로 스타일일때는 멀티라인이어야함(이건 기본 컨트롤도 마찬가지임)
- GDI+ 이용한 그라데이션 효과를 줌
- 탭 위치 스타일이 현재 기본(Top)만 가능함. Bottom은 현재 미구현
2. 일반 스타일
- 가로/세로 스타일이 가능함
- 단, 세로 스타일일때는 멀티라인이어야함(이건 기본 컨트롤도 마찬가지임)
- 3D 스타일과 플랫 스타일로 변경하는 옵션
- 보더의 색을 지정하는 옵션
- 탭 위치 스타일이 현재 기본(Top)만 가능함. Bottom은 현재 미구현
다음은 CTabCtrlEx 클래스의 주요함수 설명입니다.
1. void SetColor(COLORREF crText, COLORREF crBorder, COLORREF crBackIn, COLORREF crBackOut, BOOL bRedraw=TRUE)
: 텍스트, 배경안쪽, 배경바깥쪽, 보더 색 설정
2. void Set3dBorder(BOOL b3dBorder)
: 보더 스타일 설정(TRUE=3D, FALSE=플랫)
3. void SetItemImage(int nItem, int nImage)
: 해당 탭 아이템의 이미지 설정
4. virtual void TextOutVertical(CDC* pDC, CRect rect, CStringW sText)
: 세로 스타일일 경우 텍스트를 한문자씩 세로로 출력
5. virtual void DrawMainBorder(LPDRAWITEMSTRUCT lpDrawItemStruct)
: 메인 보더를 그림
6. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
: 해당 탭 아이템의 텍스트를 출력
7. virtual void DrawItemBorder(LPDRAWITEMSTRUCT lpDrawItemStruct)
: 해당 탭 아이템의 보더를 그림
'GUI Toolkit > MFC' 카테고리의 다른 글
MFC - Dialog Item의 배경을 투명하게 만들기 (0) | 2017.09.22 |
---|---|
MFC - 리스트 컨트롤(List Control) 커스터마이징 (0) | 2017.09.13 |
MFC - 다이얼로그(Dialog) 에 이미지 넣기 (0) | 2017.09.12 |
MFC - 다이얼로그(Dialog) 캡쳐하여 인쇄하기 (0) | 2017.09.11 |
MFC - 다이얼로그(Dialog) Item들의 글자 크기 변경 (0) | 2017.09.11 |