在消息映射中:
BEGIN_MESSAGE_MAP(CPaperEditorDlg, CDialogEx)
ON_NOTIFY_EX(TTN_NEEDTEXT,0, SetToopTipText)
END_MESSAGE_MAP()
SetToopTipText 是消息回调函数。
头文件中:
//tooltip
BOOL SetToopTipText(UINT id, NMHDR *pTTTStruct, LRESULT *pResult);
在 OnInitDialog() 函数中:
EnableToolTips(TRUE);
实现,得到控件ID后根据ID复制tooltip字符串到结构中:
BOOL CPaperEditorDlg::SetToopTipText(UINT id, NMHDR *pTTTStruct, LRESULT *pResult)
{
TOOLTIPTEXT * pTTT = (TOOLTIPTEXT *)pTTTStruct;
UINT nID = pTTTStruct->idFrom; //得到相应窗口ID,有可能是HWND
nID = ::GetDlgCtrlID((HWND)nID); //从HWND得到ID值
if (nID && (pTTT->uFlags & TTF_IDISHWND)) //表明nID是否为HWND
{
switch (nID)
{
case IDC_CHECKA:
strcpy_s(pTTT->lpszText, 80, _T("选项A"));
break;
case IDC_CHECKB:
strcpy_s(pTTT->lpszText, 80, _T("选项B"));
break;
case IDC_ANS:
strcpy_s(pTTT->lpszText, 80, _T("输入问题答案"));
break;
case IDC_ANSA:
strcpy_s(pTTT->lpszText, 80, _T("输入答案A的内容"));
break;
case IDC_ANSB:
strcpy_s(pTTT->lpszText, 80, _T("输入答案B的内容"));
break;
default:
break;
}
return TRUE;
}
return FALSE;
}