home *** CD-ROM | disk | FTP | other *** search
- //-----------------------------------------------------------------------------
- // File: flextooltip.h
- //
- // Desc: Implements a tooltip class that displays a text string as a tooltip.
- // CFlexTooltip (derived from CFlexWnd) is used throughout the UI when
- // a control needs to have a tooltip.
- //
- // Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
- //-----------------------------------------------------------------------------
-
- #ifndef __FLEXTOOLTIP_H__
- #define __FLEXTOOLTIP_H__
-
- struct TOOLTIPINIT
- {
- HWND hWndParent;
- int iSBWidth;
- DWORD dwID;
- HWND hWndNotify;
- TCHAR tszCaption[MAX_PATH];
- };
-
- struct TOOLTIPINITPARAM
- {
- HWND hWndParent;
- int iSBWidth;
- DWORD dwID;
- HWND hWndNotify;
- LPCTSTR tszCaption;
- };
-
- class CFlexToolTip : public CFlexWnd
- {
- LPTSTR m_tszText;
- COLORREF m_rgbText, m_rgbBk, m_rgbSelText, m_rgbSelBk, m_rgbFill, m_rgbLine;
- HWND m_hNotifyWnd;
- DWORD m_dwID; // Used to store offset when owned by a control
- int m_iSBWidth; // Width of the owner window's scroll bar. We cannot obscure the scroll bar.
- BOOL m_bEnabled; // Whether this is enabled. If not, we hide the underlying window.
-
- void InternalPaint(HDC hDC);
-
- public:
- CFlexToolTip();
- virtual ~CFlexToolTip();
-
- // Statics for show control
- static UINT_PTR s_uiTimerID;
- static DWORD s_dwLastTimeStamp; // Last time stamp for mouse move
- static TOOLTIPINIT s_TTParam; // Parameters to initialize the tooltip
- static void SetToolTipParent(HWND hWnd) { s_TTParam.hWndParent = hWnd; }
- static void UpdateToolTipParam(TOOLTIPINITPARAM &TTParam)
- {
- s_TTParam.hWndParent = TTParam.hWndParent;
- s_TTParam.iSBWidth = TTParam.iSBWidth;
- s_TTParam.dwID = TTParam.dwID;
- s_TTParam.hWndNotify = TTParam.hWndNotify;
- if (TTParam.tszCaption)
- lstrcpy((LPTSTR)s_TTParam.tszCaption, TTParam.tszCaption);
- else
- s_TTParam.tszCaption[0] = _T('\0');
- }
- static TOOLTIPINIT &GetTTParam() { return s_TTParam; }
- static void CALLBACK TimerFunc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);
-
- HWND Create(HWND hParent, const RECT &rect, BOOL bVisible, int iSBWidth = 0);
-
- HWND GetParent() { return ::GetParent(m_hWnd); }
-
- virtual LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct);
- virtual void OnDestroy();
-
- private:
- void SetNotifyWindow(HWND hWnd) { m_hNotifyWnd = hWnd; }
- void SetColors(COLORREF text, COLORREF bk, COLORREF seltext, COLORREF selbk, COLORREF fill, COLORREF line);
- void SetText(LPCTSTR tszText, POINT *textpos = NULL);
- void SetID(DWORD dwID) { m_dwID = dwID; }
- void SetPosition(POINT pt, BOOL bOffsetForMouseCursor = TRUE);
- void SetSBWidth(int iSBWidth) { m_iSBWidth = iSBWidth; }
-
- public:
- DWORD GetID() { return m_dwID; }
- void SetEnable(BOOL bEnable)
- {
- if (m_hWnd)
- {
- if (bEnable && !m_bEnabled)
- {
- ShowWindow(m_hWnd, SW_SHOW);
- Invalidate();
- }
- else if (!bEnable && m_bEnabled)
- {
- ShowWindow(m_hWnd, SW_HIDE);
- Invalidate();
- }
- }
- m_bEnabled = bEnable;
- }
- BOOL IsEnabled() { return m_bEnabled; }
-
- virtual void OnClick(POINT point, WPARAM fwKeys, BOOL bLeft);
- virtual void OnDoubleClick(POINT point, WPARAM fwKeys, BOOL bLeft);
-
- protected:
- virtual void OnPaint(HDC hDC);
- virtual LRESULT WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
- };
-
- #endif
-