특정 컨트롤 위에 마우스 커서가 위치하면 툴팁이 나오게 하는 방법에 대해서 알아보겠습니다.

// 해당 클래스의 헤더파일에 폰트객체를 선언한다.
private:
    CToolTipCtrl m_tip_ctrl;

// ClassWizard에서 PreTranslateMessage 메시지를 등록하고 해당 메시지 핸들러에
// 아래의 코드를 추가한다.
BOOL 클래스명::PreTranslateMessage(MSG* pMsg)
{
    m_tip_ctrl.RelayEvent(pMsg);

    return CDialog::PreTranslateMessage(pMsg);
}

// OnInitDialog()함수에 아래의 코드를 추가한다.
BOOL 클래스명::OnInitDialog()
{
    ………. 중간 생략 ……….

// 툴팁컨트롤을 생성한다.
    m_tip_ctrl.Create(this);

// 툴팁이 사용할 컨트롤의 ID가 IDC_TEST_BTN 이라고 하면 아래와 같이 사용할
    // 내용을 명시해야 한다.
   m_tip_ctrl.AddTool(GetDlgItem(IDC_TEST_BTN), “툴팁 테스트 첫번째!!”);

// (선택사항) 툴팁에 사용할 내용이 너무 긴 경우에 한줄로 표시되면 사용자가 불편할 수 있다.
    // 이런 경우에는 툴팁의 폭을 제한하여 여러줄로 출력하게 만들면 된다.
    // 명시한 툴팁 내용의 폭이 300을 넘어서면 다음줄로 넘겨서 출력한다.
    m_tip_ctrl.SetMaxTipWidth(300);

// (선택사항) 툴팁에 별다른 설정을 하지 않으면 툴팁이 출력되었다가 일정시간이 지나면
    // 사라져 버린다. 보통 이 시간이 너무 짧아서 사용자가 불편함을 느끼는 경우가 있는데
    // 이러한 경우에는 아래의 코드처럼 시간을 늘려주면 된다.
    // 툴팁의 출력지속 시간을 20초로 늘린다. ( 20000 -> 20초 )
    m_tip_ctrl.SetDelayTime(TTDT_AUTOPOP, 20000);

// (선택사항) 동일한 클래스에서 추가적인 컨트롤에 툴팁을 사용하고 싶다면 툴팁 컨트롤을
    // 추가할 필요없이 AddTool 함수만 추가로 호출하면 된다.
    // 추가적으로 툴팁을 사용할 컨트롤의 ID가 IDC_TEST2_BTN 이라고 하면 아래와 같이
    // 툴팁의 내용을 명시하면 된다.
    m_tip_ctrl.AddTool(GetDlgItem(IDC_TEST2_BTN), “툴팁 테스트 두번째!!”);

// (선택사항) 툴팁을 특정 컨트롤이 아닌 사용자 지정 영역을 이용해서 사용하려면 아래와 같이
    // AddTool 함수를 호출하면 된다.
    // this에 해당 하는 윈도우의 시작위치가 (20, 30)이고 끝위치가 (320, 230)인 영역에
    // 마우스 커서가 위치하면 툴팁을 출력한다. 그리고 마지막 인자는 해당영역의 ID로 사용되므로
// 추가적인 영역을 등록할때는 1이 아닌 다른 값으로 등록하면 된다.
    m_tip_ctrl.AddTool(this, “사용자 영역 툴팁 테스트”, CRect(20, 30, 320, 230), 1);

    return TRUE;
}

댓글 남기기