次の方法で共有


CWnd::EnableToolTips

更新 : 2007 年 11 月

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

BOOL EnableToolTips(
   BOOL bEnable = TRUE
);

パラメータ

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

戻り値

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

解説

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

sa23xtsw.alert_note(ja-jp,VS.90).gifメモ :

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 のメンバ