<버튼 안의 버튼>

참고문헌 : www.codeguru.com "button control" section - A button within a button

 

여기서 소개할 버튼은 버튼안에 또 다른 버튼이 들어있는 컨트롤입니다. 안쪽에 있는 버튼과 바깥쪽에 있는 버튼은 물론 따로따로 사용이 가능합니다. 이런 버튼이 어디에 쓰일지는 알 수 없지만, 아무튼 신기한 버튼이니까 어딘가 쓰일 데가 있겠죠.

이제 이 버튼을 사용해 봅시다.

1. 버튼 클래스 코드를 다운받습니다.

2. 다운 받은 클래스를 프로젝트에 복사해 넣고, 추가합니다.

3. 버튼을 추가하고 싶은 곳에 일반 버튼을 놓습니다. 이 버튼을 그림에 소개한 버튼으로 바꿀 겁니다.

4. 클래스 위저드에서 Member Variables 탭을 보죠. 거기서 다음과 같이 설정합니다.

Member variables name : m_wndHiButton
Category : Control
Variable type : CButton

 

5. 버튼을 사용하는 클래스의 헤더파일의 앞부분에 다음 코드를 추가합니다.

#include "HiButton.h"

 

6. 앞의 헤더파일에서 조금만 내려가면 다음과 같은 코드가 있을 겁니다.

    CButton       m_wndHiButton;

 이 부분을 다음과 같이 변경합니다.

    CHiButton       m_wndHiButton;

이렇게 고치면 버튼 모양이 바뀝니다.

 

7. 버튼의 핸들러는 다음과 같은 식으로 작성하면 됩니다.

void CBtnBtnDlg::OnButton1()
{
        // TODO: Add your control notification handler code here
        if(m_wndHiButton.m_bInsideButton)  // 안쪽 버튼을 누르면
                AfxMessageBox(_T("Test Inside"));
        else                                               // 바깥쪽 버튼을 누르면  
                AfxMessageBox(_T("Test"));
}

- the end of this article -