void CWndToolTip::DelTool( HWND hWnd, UINT_PTR nIDTool ) { // hWnd = the parent or the control depending on nIDTool ASSERT(hWnd); TOOLINFO ti; FillInToolInfo(ti, hWnd, nIDTool); ::SendMessage(m_hWnd, TTM_DELTOOL, 0, (LPARAM)&ti); }
void CToolTipCtrl::DelTool(CWnd* pWnd, UINT_PTR nIDTool) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pWnd != NULL); TOOLINFO ti; FillInToolInfo(ti, pWnd, nIDTool); ::SendMessage(m_hWnd, TTM_DELTOOL, 0, (LPARAM)&ti); }
BOOL CToolTipCtrl::GetToolInfo(LPTOOLINFO lpToolInfo, CWnd* pWnd, UINT nIDTool) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pWnd != NULL); ASSERT(lpToolInfo != NULL); FillInToolInfo(*lpToolInfo, pWnd, nIDTool); return (BOOL)::SendMessage(m_hWnd, TTM_GETTOOLINFO, 0, (LPARAM)lpToolInfo); }
BOOL CToolTipCtrl::GetToolInfo(CToolInfo& ToolInfo, CWnd* pWnd, UINT_PTR nIDTool) const { ASSERT(::IsWindow(m_hWnd)); ASSERT(pWnd != NULL); FillInToolInfo(ToolInfo, pWnd, nIDTool); ToolInfo.lpszText = ToolInfo.szText; return (BOOL)::SendMessage(m_hWnd, TTM_GETTOOLINFO, 0, (LPARAM)&ToolInfo); }
void CToolTipCtrl::UpdateTipText(LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pWnd != NULL); TOOLINFO ti; FillInToolInfo(ti, pWnd, nIDTool); ti.lpszText = (LPTSTR)lpszText; ::SendMessage(m_hWnd, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti); }
void CToolTipCtrl::GetText(CString& str, CWnd* pWnd, UINT nIDTool) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pWnd != NULL); TOOLINFO ti; FillInToolInfo(ti, pWnd, nIDTool); ::SendMessage(m_hWnd, TTM_GETTEXT, 0, (LPARAM)&ti); str = ti.lpszText; }
void CToolTipCtrl::UpdateTipText(LPCTSTR lpszText, CWnd* pWnd, UINT_PTR nIDTool) { ENSURE(::IsWindow(m_hWnd)); ENSURE_ARG(pWnd != NULL); ENSURE_ARG(_tcslen(lpszText) <= MAX_TIP_TEXT_LENGTH); TOOLINFO ti; FillInToolInfo(ti, pWnd, nIDTool); ti.lpszText = (LPTSTR)lpszText; ::SendMessage(m_hWnd, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti); }
void CToolTipCtrl::SetToolRect(CWnd* pWnd, UINT_PTR nIDTool, LPCRECT lpRect) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pWnd != NULL); ASSERT(nIDTool != 0); TOOLINFO ti; FillInToolInfo(ti, pWnd, nIDTool); Checked::memcpy_s(&ti.rect, sizeof(RECT), lpRect, sizeof(RECT)); ::SendMessage(m_hWnd, TTM_NEWTOOLRECT, 0, (LPARAM)&ti); }
bool CWndToolTip::AddTool( HWND hWnd, LPCTSTR lpszText, LPCRECT lpRectTool, UINT_PTR nIDTool ) { // hWnd = the parent or the control depending on nIDTool ASSERT(hWnd); ASSERT(lpszText != NULL); TOOLINFO ti; FillInToolInfo(ti, hWnd, nIDTool); if (lpRectTool != NULL) memcpy(&ti.rect, lpRectTool, sizeof(RECT)); ti.uFlags |= TTF_SUBCLASS; ti.lpszText = (LPTSTR)lpszText; return ::SendMessage(m_hWnd, TTM_ADDTOOL, 0, (LPARAM)&ti) ? true : false; }
void CToolTipCtrl::GetText(CString& str, CWnd* pWnd, UINT_PTR nIDTool) const { ASSERT(::IsWindow(m_hWnd)); ASSERT(pWnd != NULL); TOOLINFO ti; FillInToolInfo(ti, pWnd, nIDTool); //Dogtag to detect buffer overruns in TTM_GETTEXT (Cannot query for text len). const TCHAR _OverrunDetector[] = _T("M\0FC"); ti.lpszText = str.GetBuffer(MAX_TIP_TEXT_LENGTH + _countof(_OverrunDetector) ); memset(ti.lpszText,0,MAX_TIP_TEXT_LENGTH*sizeof(TCHAR)); Checked::memcpy_s(ti.lpszText + MAX_TIP_TEXT_LENGTH, sizeof(_OverrunDetector), _OverrunDetector,sizeof(_OverrunDetector)); ::SendMessage(m_hWnd, TTM_GETTEXT, 0, (LPARAM)&ti); ENSURE_THROW(memcmp(_OverrunDetector,ti.lpszText + MAX_TIP_TEXT_LENGTH,sizeof(_OverrunDetector)) == 0,::AfxThrowMemoryException()); str.ReleaseBuffer(); }
BOOL CToolTipCtrl::AddTool(CWnd* pWnd, LPCTSTR lpszText, LPCRECT lpRectTool, UINT nIDTool) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pWnd != NULL); ASSERT(lpszText != NULL); // the toolrect and toolid must both be zero or both valid ASSERT((lpRectTool != NULL && nIDTool != 0) || (lpRectTool == NULL) && (nIDTool == 0)); TOOLINFO ti; FillInToolInfo(ti, pWnd, nIDTool); if (lpRectTool != NULL) memcpy(&ti.rect, lpRectTool, sizeof(RECT)); ti.lpszText = (LPTSTR)lpszText; return (BOOL) ::SendMessage(m_hWnd, TTM_ADDTOOL, 0, (LPARAM)&ti); }
BOOL CToolTipCtrl::AddTool(CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool, UINT_PTR nIDTool) { ASSERT(::IsWindow(m_hWnd)); ASSERT(nIDText != 0); ASSERT(pWnd != NULL); // the toolrect and toolid must both be zero or both valid ASSERT((lpRectTool != NULL && nIDTool != 0) || (lpRectTool == NULL) && (nIDTool == 0)); TOOLINFO ti; FillInToolInfo(ti, pWnd, nIDTool); if (lpRectTool != NULL) { Checked::memcpy_s(&ti.rect, sizeof(RECT), lpRectTool, sizeof(RECT)); } ti.hinst = AfxFindResourceHandle(MAKEINTRESOURCE((nIDText>>4)+1), RT_STRING); ASSERT(ti.hinst != NULL); ti.lpszText = (LPTSTR)MAKEINTRESOURCE(nIDText); return (BOOL) ::SendMessage(m_hWnd, TTM_ADDTOOL, 0, (LPARAM)&ti); }