<객체에 툴팁달기>

* Project->Add To Project->Component And Controls...->Visual C++ Components->[ToolTip Support]를 Insert한다.

이렇게 하면 아래와 같은 상태를 할 수 있는 상태가 된다.

Ps. 사용할때는 onInitDialog의

  m_tooltip.Create(this);
  m_tooltip.Activate(TRUE);

이라는 생성 함수 다음에

   m_tooltip.AddTool(GetDlgItem(IDC_BTNTODAY), "오늘날짜");

이런식으로 추가하면 된다.

우선 툴팁을 달기 위해, 툴팁을 알아서 처리해 주는 CToolTipCtrl이라는 클래스로 객체를 하나 만듭니다.

즉, 다이얼로그의 헤더 파일에서, 다이얼로그 클래스 안에 다음과 같은 변수를 만들면  되겠죠.

CToolTipCtrl m_tooltip;

그리고 다이얼로그의 onInitDialog()에서 원하시는 버튼이나, 컨트롤들을 이 툴팁 변수에 입력하시면 됩니다.

이때, CToolTipCtrl의 AddTool()이라는 함수를 사용하게됩니다.

이 함수를 도움말에서 찾아보면 다음과 같이 나옵니다.

BOOL AddTool( CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
              LPCRECT lpRectTool = NULL, UINT nIDTool = 0 );

여기서 다른 건 볼 거 없구, 첫번째 것과 두번째 것만 보시면 됩니다.
첫번째 인자는, 툴팁을 달고 싶은 컨트롤의 윈도우 포인터입니다.
두번째 인자는, 툴팁으로 출력하고 싶은 텍스트예요.

만약 다이얼로그에 IDC_TIPBUTTON이라는 버튼이 있고, 이 버튼에 "툴팁"이라는 툴팁을 넣고 싶다면 아래와 같이 하시면 되겠죠.

m_tooltip.AddTool(GetDlgItem(IDC_TIPBUTTON), "툴팁");
....

이렇게 한 다음 한가지 더 해줘야 할게 있습니다.
마우스의 움직임을 툴팁 변수에게 알려줘야 하거든요.
그래야 툴팁을 출력해야 하는 지 판단할거 아닙니까?

그래서 다음과 같이 PreTranslateMessage()라는 함수에 코드를 넣으시면 됩니다.
 
PreTranslateMessage(MSG* pMsg)
{
   // TODO: Add your specialized code here and/or call the base class
   switch(pMsg->message)
   {
      case WM_LBUTTONDOWN:
      case WM_LBUTTONUP:
      case WM_MOUSEMOVE:
             m_tooltip.RelayEvent(pMsg);
             break;
      default:
             break;
   }

   return CDialog::PreTranslateMessage(pMsg);
}

복사했습니다!