툴팁은 CToolTipCtrl 클래스를 이용하면 쉽게 구현할 수 있습니다. 먼저 Create()를 호출해서 툴팁 객체를 생성합니다. 그리고 나서 AddTool()를 호출해 각각의 컨트롤과 툴팁 문자열을 연결해 줍니다. 여기서 툴팁 문자열을 표시해 주는 함수는 ReplyEvent()이며, 툴팁 컨트롤 객체를 생성해 주고 컨트롤과 연결할 수 있는 가장 적당한 곳은 WM_INITDIALOG 메시지의 핸들러(OnInitDialog())입니다.
이렇게 툴팁을 초기화해 준 후에 ReplyEvent()를 호출하면 툴팁을 볼 수 있으며, 나머지 처리는 PreTranslateMessage()에서 담당합니다.
[code lang="cpp"]
void CTooltipDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTooltipDlg) DDX_Control(pDX, IDOK, m_btnOK); DDX_Control(pDX, IDCANCEL, m_btnCancel); DDX_Control(pDX, IDC_EDIT, m_edit); //}}AFX_DATA_MAP }
BOOL CTooltipDlg::OnInitDialog() { CDialog::OnInitDialog(); // 툴팁 컨트롤을 생성해 준다. m_tooltip.Create(this); // AddTool 함수에 컨트롤 객체의 포인터와 툴팁 문자열을 설정한다. m_tooltip.AddTool(&m_edit, "여기에 이름을 넣으세요"); m_tooltip.AddTool(&m_btnOK, "여기를 누르면 확인입니다"); m_tooltip.AddTool(&m_btnCancel, "여기를 누르면 취소입니다."); return TRUE; }
BOOL CTooltipDlg::PreTranslateMessage(MSG* pMsg) { switch(pMsg->message) { case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_MOUSEMOVE: // 툴팁을 보여 준다. m_tooltip.RelayEvent(pMsg); } return CDialog::PreTranslateMessage(pMsg); } [/code]