티스토리 뷰
이번것은 위의 그림처럼 다양한 형태의 버튼들입니다.
역시 위에서 필요한 소스화일을 다운받으세요..
2개의 헤더화일과 2개의cpp화일임다.
다운받으셔서 자신의 프로젝트에 삽입시켜 줍니다.
이제 이부분은 강조안해도 되겠죠?
저의 경우 프로젝트 이름을 MyBtn으로 주었습니다.
그리고나서.. #include "VtxButton.h" 을 해주시는데... 어디다가 하냐면
MyBtnDlg.cpp(다이얼로그 구현화일) 와 MyBtn.cpp(어플리케이션 구현화일)에다가 해주되..
#include "MyBtnDlg.h"라고 코딩되어져 있는 바로 윗줄에 합니다. 반드시!!!
자...이제 다이얼로그에다가 버튼들을 배치합시다...
아래의 그림처럼 배치해 볼까요?? 사이즈의 크기를 적절히 넓혀줍니다.
그 사이즈 그대로 버튼이 바뀌니까요.. 아이디는 아래처럼 기본값으로...
일반Flat버튼과 원형Flat버튼등 Flat버튼은 프로퍼티의 두번째 탭인 style에서
Flat이란 것에 체크를 해주어야 위처럼 모양이 됩니다.
자. 그리고나서 위저드를 열어봅시다.. 위저드의 두번째 탭(Member Variable)에서 보면..
위의 버튼들이 주~욱 나오죠??? 더블클릭합니다. 그럼 아래처럼 그림이 뜨죠???
위처럼 모든 버튼의 1~9까지 위처럼 만즐어줍니다.
그리고나면 MyBtnDlg의 헤더에는 다음처럼 코딩이 주욱 되어지죠???
enum { IDD = IDD_MYBTN_DIALOG };
CButton m_cButton9;
CButton m_cButton7;
CButton m_cButton8;
CButton m_cButton6;
CButton m_cButton5;
CButton m_cButton4;
CButton m_cButton3;
CButton m_cButton2;
CButton m_cButton1;
//}}AFX_DATA
여기의 CButton을 전부다 CVtxButton으로 바꾸어줍니다.
그럼 준비완료... 이제 아주 간단한 코딩으로 버튼의 모양을 바꾸어 보겠습니다.
BOOL CMyBtnDlg::OnInitDialog() 함수 안에다가 아래의 코딩을 추가합니다.
m_cButton1.SetVtx(VTX_RECT);
m_cButton2.SetVtx(VTX_DIAMOND);
m_cButton3.SetVtx(VTX_CIRCLE);
m_cButton4.SetVtx(VTX_STRETCHEDCIRCLE);
m_cButton5.SetVtx(VTX_RECT);
m_cButton6.SetVtx(VTX_DIAMOND);
m_cButton7.SetVtx(VTX_CIRCLE);
m_cButton8.SetVtx(VTX_STRETCHEDCIRCLE);
그리고나서 컴파일하고 돌려보면 잘 될겁니다. 벌써 눈치 채셨겠지만.. 우리가 다운받은
클래스를 이용하면 버튼모양을 SetVtx()함수를 이용해서 간단히 바꿀수가 있어요.
안의 인자가 무엇이냐에 따라서 말이지요... 그럼 인자를 보자면...
VTX_RECT : 사각형
VTX_DIAMOND : 다이아몬드
VTX_CIRCLE : 원형
VTX_STRETCHEDCIRCLR : 타원형...
하하.. 너무 간단하죠???? 그럼 위의 버튼중에 마지막에 있는 사다리꼴(?) 버튼은..
어떻게 만드는 것일까요??? 그 것의 경우 따로 작업이 필요한 듯 합니다.
소스는 아래와 같으니 시간이 있으신 분들은 한번 분석해 보시구...
자신만의 예쁜모양의 버튼도 만들어 보세요..
CRect rect;
m_cButton9.GetClientRect(&rect); // Get the button's original dimensions
CVtxPolygons vtxPolygons;
int offset[4] = {0, 1, 2, 4};
for (int i = 0; i < 4; i++) // Iterate through each of the polygons
{
// Add the corners
vtxPolygons.Add(i, CVertex(rect.left + rect.bottom / 4 + offset[i], rect.top + offset[i]));
vtxPolygons.Add(i, CVertex(rect.right - offset[i] * 7 / 4 - 1, rect.top + offset[i]));
vtxPolygons.Add(i, CVertex(rect.right - rect.bottom / 4 - offset[i] - 1, rect.bottom - offset[i] - 1));
vtxPolygons.Add(i, CVertex(rect.left + offset[i] * 7 / 4, rect.bottom - offset[i] - 1));
}
vtxPolygons.ClosePolygons(); // Close the polygons off
m_cButton9.SetVtxPolygons(&vtxPolygons); // Set the button's polygons
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 레포트
- 리눅스
- 실전! 업무에 바로 쓰는 SQL 튜닝
- hp-ux
- 일기
- 실습으로 배우는 Unix System Admin (HPUX)
- 과제물
- World Of Warcraft
- 네트워크
- HPUX
- 후기
- 와우
- 박영창
- Japanimation
- 애니메이션
- wow
- 프로그래밍
- 모임
- 시간표
- oracle
- 삼성 소프트웨어 멤버십
- 책
- 오픈 소스 SW와 전략적 활용
- 오라클
- SSM
- 영화
- 회식
- SQL 튜닝
- 캐논
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함