diff --git a/PowerEditor/src/WinControls/ToolTip/ToolTip.cpp b/PowerEditor/src/WinControls/ToolTip/ToolTip.cpp new file mode 100644 index 00000000..50004932 --- /dev/null +++ b/PowerEditor/src/WinControls/ToolTip/ToolTip.cpp @@ -0,0 +1,82 @@ +/* +this file is part of notepad++ +Copyright (C)2003 Don HO < donho@altern.org > + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "ToolTip.h" +#include "SysMsg.h" + + + +LRESULT CALLBACK dlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); + + +void ToolTip::init(HINSTANCE hInst, HWND hParent) +{ + if (_hSelf == NULL) + { + Window::init(hInst, hParent); + + _hSelf = CreateWindowEx( 0, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, + CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, NULL, NULL ); + if (!_hSelf) + { + systemMessage("System Err"); + throw int(6969); + } + + ::SetWindowLong(_hSelf, GWL_USERDATA, reinterpret_cast(this)); + _defaultProc = reinterpret_cast(::SetWindowLong(_hSelf, GWL_WNDPROC, reinterpret_cast(staticWinProc))); + } +} + + +void ToolTip::Show(RECT rectTitle, char* pszTitle, int iXOff, int iWidthOff) +{ + if (isVisible()) + destroy(); + + if (strlen(pszTitle) == 0) + return; + + // INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE + _ti.cbSize = sizeof(TOOLINFO); + _ti.uFlags = TTF_TRACK | TTF_ABSOLUTE; + _ti.hwnd = ::GetParent(_hParent); + _ti.hinst = _hInst; + _ti.uId = 0; + + _ti.rect.left = rectTitle.left; + _ti.rect.top = rectTitle.top; + _ti.rect.right = rectTitle.right; + _ti.rect.bottom = rectTitle.bottom; + + HFONT _hFont = (HFONT)::SendMessage(_hParent, WM_GETFONT, 0, 0); + ::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast(_hFont), TRUE); + + _ti.lpszText = pszTitle; + ::SendMessage(_hSelf, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &_ti); + ::SendMessage(_hSelf, TTM_TRACKPOSITION, 0, (LPARAM)(DWORD) MAKELONG(_ti.rect.left + iXOff, _ti.rect.top + iWidthOff)); + ::SendMessage(_hSelf, TTM_TRACKACTIVATE, true, (LPARAM)(LPTOOLINFO) &_ti); +} + + +LRESULT ToolTip::runProc(UINT message, WPARAM wParam, LPARAM lParam) +{ + return ::CallWindowProc(_defaultProc, _hSelf, message, wParam, lParam); +} + diff --git a/PowerEditor/src/WinControls/ToolTip/ToolTip.h b/PowerEditor/src/WinControls/ToolTip/ToolTip.h new file mode 100644 index 00000000..0f26c55c --- /dev/null +++ b/PowerEditor/src/WinControls/ToolTip/ToolTip.h @@ -0,0 +1,63 @@ +/* +this file is part of notepad++ +Copyright (C)2003 Don HO < donho@altern.org > + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __TOOLTIP_H__ +#define __TOOLTIP_H__ + +#include +#include "Notepad_plus.h" +#include "Window.h" +#include + + +using namespace std; + + +class ToolTip : public Window +{ +public : + ToolTip() : _bTrackMouse(FALSE) {}; + + void destroy(void){ + ::DestroyWindow(_hSelf); + _hSelf = NULL; + }; + +// Attributes +public: + +// Implementation +public: + virtual void init(HINSTANCE hInst, HWND hParent); + void Show(RECT rectTitle, char* pszTitleText, int iXOff = 0, int iWidthOff = 0); + +protected: + WNDPROC _defaultProc; + BOOL _bTrackMouse; + TOOLINFO _ti; + + + static LRESULT CALLBACK staticWinProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { + return (((ToolTip *)(::GetWindowLong(hwnd, GWL_USERDATA)))->runProc(Message, wParam, lParam)); + }; + LRESULT runProc(UINT Message, WPARAM wParam, LPARAM lParam); + void SendHitMessage(void); +}; + +#endif // __TOOLTIP_H__