111 lines
3.2 KiB
C++
111 lines
3.2 KiB
C++
//-----------------------------------------------------------------------------
|
|
// 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-2000 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
|