ツール ヒント用 TTN_NEEDTEXT 通知の処理
更新 : 2007 年 11 月
ツール ヒントを有効にする手順の一部として、オーナー ウィンドウのメッセージ マップに次のエントリを追加すると、TTN_NEEDTEXT メッセージを処理できます。
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CMyDialog::OnTtnNeedText)
- memberFxn
対象のボタンに対してテキストが必要になったときに呼び出すメンバ関数。
ツール ヒントの ID は必ず 0 にしてください。
次のように、クラス定義でハンドラ関数を宣言します。
afx_msg BOOL OnTtnNeedText(UINT id, NMHDR *pNMHDR, LRESULT *pResult);
イタリック体で示されたパラメータの意味は以下のとおりです。
id
通知を送ったコントロールの識別子。使用されていません。このコントロール ID は NMHDR 構造体から取得します。pNMHDR
NMTTDISPINFO 構造体へのポインタ。この構造体の詳細については、「TOOLTIPTEXT 構造体」を参照してください。pResult
結果コードへのポインタ。結果コードは、関数が戻る前に設定できます。TTN_NEEDTEXT ハンドラは、パラメータ pResult を無視します。
フォーム ビューの通知ハンドラの例は、次のとおりです。
BOOL CMyDialog::OnTtnNeedText(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(id);
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT_PTR nID = pNMHDR->idFrom;
BOOL bRet = FALSE;
if (pTTT->uFlags & TTF_IDISHWND)
{
// idFrom is actually the HWND of the tool
nID = ::GetDlgCtrlID((HWND)nID);
if(nID)
{
TCHAR szBuff[64];
_stprintf_s(szBuff, sizeof(szBuff) / sizeof(TCHAR),
_T("Control ID = %d"), nID);
pTTT->lpszText = szBuff;
pTTT->hinst = AfxGetResourceHandle();
bRet = TRUE;
}
}
*pResult = 0;
return bRet;
}
EnableToolTips を呼び出します (このコード片は OnInitDialog の一部です)。
EnableToolTips(TRUE);