CWnd::EnableToolTips

指定されたウィンドウのツール ヒントを有効にします。

BOOL EnableToolTips(
   BOOL bEnable = TRUE
);

パラメーター

  • bEnable
    ツール ヒントの有効または無効を指定します。 TRUE を指定するとコントロールが有効になり、FALSE を指定するとコントロールが無効になります。

戻り値

ツール ヒントが有効な場合は、TRUE を返します。ツール ヒントが無効な場合は、FALSE を返します。

解説

ウィンドウに TOOLINFO 構造体を組み入れるには、OnToolHitTest をオーバーライドします。

注意

CToolBar など、ウィンドウの中には、OnToolHitTest が組み込み実装されているものもあります。

この構造体の詳細については、Windows SDK の「TOOLINFO」を参照してください。

親ウィンドウが CFrameWnd から派生されていない限り、子コントロールのツール ヒントを表示するには、単に EnableToolTips を呼び出すだけでは十分ではありません。 これは、CFrameWnd が提供するのが TTN_NEEDTEXT 通知の既定のハンドラーだからです。 親ウィンドウが CFrameWnd から派生されたものでない場合 (ダイアログ ボックスまたはフォーム ビューの場合)、TTN_NEEDTEXT ツール ヒント通知のハンドラーを提供しない限り、子コントロールのツール ヒントは正しく表示されません。 「CFrameWnd から派生していないウィンドウのツール ヒント」を参照してください。

EnableToolTips によってウィンドウに提供された既定のツール ヒントには、対応するテキストがありません。 ツール ヒントに表示するテキストを取得するには、ツール ヒント ウィンドウが表示される直前に、TTN_NEEDTEXT 通知をツール ヒント コントロールの親ウィンドウに送ります。 TOOLTIPTEXT 構造体の pszText メンバーに値を割り当てるためのメッセージ ハンドラーがない場合、ツール ヒントのテキストは表示されません。

使用例

// From message map for CMdiView, a CView-derived class
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, &CMdiView::OnToolTipNotify)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, &CMdiView::OnToolTipNotify)
void CMdiView::OnInitialUpdate()
{
   CView::OnInitialUpdate();

   m_Edit.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
      CRect(10, 10, 100, 100), this, IDC_TTEDIT);
   EnableToolTips(TRUE);   // enable tool tips for view
}

//Notification handler
BOOL CMdiView::OnToolTipNotify(UINT id, NMHDR* pNMHDR, LRESULT* pResult)
{
   UNREFERENCED_PARAMETER(id);
   UNREFERENCED_PARAMETER(pResult);

   // need to handle both ANSI and UNICODE versions of the message
   TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
   TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
   CStringA strTipText;
   UINT_PTR nID = pNMHDR->idFrom;
   if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
      pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
   {
      // idFrom is actually the HWND of the tool
      nID = ::GetDlgCtrlID((HWND)nID);
   }

   if (nID != 0) // will be zero on a separator
      strTipText.Format("Control ID = %d", nID);

   if (pNMHDR->code == TTN_NEEDTEXTA)
   {
      strncpy_s(pTTTA->szText, sizeof(pTTTA->szText), strTipText, 
         strTipText.GetLength() + 1);
   }
   else
   {
      ::MultiByteToWideChar(CP_ACP , 0, strTipText, strTipText.GetLength() + 1,
         pTTTW->szText, sizeof(pTTTW->szText)/(sizeof pTTTW->szText[0]));
   }

   return TRUE;    // message was handled
}

必要条件

**ヘッダー:**afxwin.h

参照

参照

CWnd クラス

階層図

CWnd::CancelToolTips

CWnd::OnToolHitTest

CToolBar クラス

TOOLINFO

概念

CWnd のメンバー