void CHistoryCombo::CreateToolTip() { // create tooltip m_hWndToolTip = ::CreateWindowEx(NULL, TOOLTIPS_CLASS, nullptr, TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, m_hWnd, nullptr, nullptr, nullptr); // initialize tool info struct memset(&m_ToolInfo, 0, sizeof(m_ToolInfo)); m_ToolInfo.cbSize = sizeof(m_ToolInfo); m_ToolInfo.uFlags = TTF_TRANSPARENT; m_ToolInfo.hwnd = m_hWnd; ::SendMessage(m_hWndToolTip, TTM_SETMAXTIPWIDTH, 0, SHRT_MAX); ::SendMessage(m_hWndToolTip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &m_ToolInfo); ::SendMessage(m_hWndToolTip, TTM_SETTIPBKCOLOR, ::GetSysColor(COLOR_HIGHLIGHT), 0); ::SendMessage(m_hWndToolTip, TTM_SETTIPTEXTCOLOR, ::GetSysColor(COLOR_HIGHLIGHTTEXT), 0); CRect rectMargins(0,-1,0,-1); ::SendMessage(m_hWndToolTip, TTM_SETMARGIN, 0, (LPARAM)&rectMargins); CFont *pFont = GetFont(); ::SendMessage(m_hWndToolTip, WM_SETFONT, (WPARAM)(HFONT)*pFont, FALSE); }
/////////////////////////////////////////////////////////////////////////////// // PreSubclassWindow void CXTipListBox::PreSubclassWindow() { TRACE(_T("in CXTipListBox::PreSubclassWindow\n")); CListBox::PreSubclassWindow(); // create tooltip m_hWndToolTip = ::CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, m_hWnd, NULL, NULL, NULL); ASSERT(m_hWndToolTip); // initialize toolinfo struct memset(&m_ToolInfo, 0, sizeof(m_ToolInfo)); m_ToolInfo.cbSize = sizeof(m_ToolInfo); m_ToolInfo.uFlags = TTF_TRACK | TTF_TRANSPARENT; m_ToolInfo.hwnd = m_hWnd; // add list box ::SendMessage(m_hWndToolTip, TTM_SETMAXTIPWIDTH, 0, SHRT_MAX); ::SendMessage(m_hWndToolTip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &m_ToolInfo); ::SendMessage(m_hWndToolTip, TTM_SETTIPBKCOLOR, ::GetSysColor(COLOR_HIGHLIGHT), 0); ::SendMessage(m_hWndToolTip, TTM_SETTIPTEXTCOLOR, ::GetSysColor(COLOR_HIGHLIGHTTEXT), 0); // reduce top & bottom margins CRect rectMargins(0,-1,0,-1); ::SendMessage(m_hWndToolTip, TTM_SETMARGIN, 0, (LPARAM)&rectMargins); // set font CFont *pFont = GetFont(); ::SendMessage(m_hWndToolTip, WM_SETFONT, (WPARAM)(HFONT)*pFont, FALSE); // remove border (listbox items only) LONG lStyle = ::GetWindowLong(m_hWndToolTip, GWL_STYLE); lStyle &= ~WS_BORDER; ::SetWindowLong(m_hWndToolTip, GWL_STYLE, lStyle); }