ツールチップコントロールを表示させる

コントロールにカーソルを移動させたときにツールチップコントロール(ツールヒント)を表示させるには、 CToolTipCtrlクラスを使用する。 以下の例ではダイアログに貼られたボタンに対してツールヒントを表示させるようにしている。
// ダイアログクラスのヘッダでの記述 --------------------
private:
	CToolTipCtrl m_ToolTip;

// ダイアログクラスのOnInitDialog関数内での記述 --------------------
	m_ToolTip.Create(this);
 	m_ToolTip.AddTool((CButton *)GetDlgItem(IDC_BUTTON1), "This is button");

// ダイアログクラスのPreTranslateMessage関数内での記述 --------------------
	switch(pMsg->message){
	case WM_LBUTTONDOWN: 
	case WM_LBUTTONUP: 
	case WM_MOUSEMOVE: 
		m_ToolTip.RelayEvent(pMsg);
		break;
	}

以下では上記の例を応用し、ボタンの左半分にカーソルがあるときに限りツールヒントを表示させるようにした。
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
	switch(pMsg->message){
	case WM_LBUTTONDOWN: 
	case WM_LBUTTONUP: 
	case WM_MOUSEMOVE: 
		CButton* pButton = (CButton*)GetDlgItem(IDC_BUTTON1);
		if( pMsg->hwnd == pButton->GetSafeHwnd() )
		{
			CPoint p(LOWORD(pMsg->lParam), HIWORD(pMsg->lParam));
			CRect rcButton;
			pButton->GetClientRect(&rcButton);

			if( p.x < rcButton.right / 2 )
			{
				m_ToolTip.Update();
				m_ToolTip.RelayEvent(pMsg);
			}
			else
				m_ToolTip.Pop();
		}
		break;
	}

	return CDialog::PreTranslateMessage(pMsg);
}

目次へ