본문 바로가기
C & C++/MFC 컨트롤

[Dialog] 제목표시줄(비작업영역)에 버튼을 만들려면??

by izen8 2011. 4. 18.
반응형

버튼 2개를 작성해 보겠습니다.

1. 먼저 버튼을 디자인(?) 하셔서 4개의 비트맵을 만들어줍니다.

  IDB_BTN1OFF, IDB_BTN1ON, IDB_BTN2OFF, IDB_BTN1ON,

 

2. 다음 넣고자 헤더에 인크루드 해주십시요.

 #include "CaptionButton.h"   <- 첨부 하겠습니다.

 

private:

    CCaptionButton *m_pCapBtn1;

    CCaptionButton *m_pCapBtn2;

 

선언을 해주신 다음

 

3. cpp에 (다이얼로그로 작성시)  (CWnd* pParent /*=NULL*/) <- 이부분 있죠 ?

    m_bSwitch = TRUE;

    m_pCapBtn1 = new CCaptionButton;

    m_pCapBtn2 = new CCaptionButton;

를 추가해 줍니다.

 

 

4. cpp init 부분에 추가를 하시면 됩니다.

    CCaptionButton::InitCapBtn(m_hWnd);

 

    m_pCapBtn1->SetBmpID(1, IDB_BTN1OFF, IDB_BTN2ON);             // 체크박스 효과를 내줍니다

    m_pCapBtn2->SetBmpID(2, IDB_BTN2OFF, IDB_BTN2ON, TRUE);   // 일반 버튼의 효과를 내줍니다.

    

    m_pCapBtn1->EnableButton(TRUE);  // 버튼을 사용할 수 있게 해야겠죠 ?

    m_pCapBtn2->EnableButton(TRUE);  // 사용 못하시게 할려면 FALSE를 주십시요.

 

5. OnDestroy()  부분에는

if(m_pCapBtn1)  

    delete m_pCapBtn1;  

if(m_pCapBtn2)  

    delete m_pCapBtn2;  

를 해줘야 메모리가 클리어 해지겠죠 ?

 

6. 담은 버튼을 클릭했을때 행위를 지정해 줘야겠죠 ?

LRESULT CTitleBarButtonDlg::OnWMU_Hitcapbutton(WPARAM wParam, LPARAM lParam)

{

    switch ((UINT)wParam)

        {

        case 1: // Button #1 has been hit:

                OnCapButton1((BOOL)lParam);

            break;

        case 2: // Button #2 has been hit:

                OnCapButton2((BOOL)lParam);

            break;

        default:    return 0;;

        }

 

return 0;

}

 

7. void 형태로 OnCapButton1(BOOL bBtnState) 과 OnCapButton2(BOOL bBtnState) 를 만들어 주세요(위저드로요)

  그리고 해당하는 버튼을 눌렀을때 이벤트를 작성해 주면 되겠지요 ?


반응형

댓글