コントロールにカーソルを移動させたときにツールチップコントロール(ツールヒント)を表示させるには、
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);
}
目次へ