⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tooltipdlg.cpp

📁 本文件包包含了大量用VC++开发的应用程序界面
💻 CPP
字号:
// ToolTipDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Controls.h"
#include "ToolTipDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CToolTipDlg property page

IMPLEMENT_DYNCREATE(CToolTipDlg, CPropertyPage)

CToolTipDlg::CToolTipDlg() : CPropertyPage(CToolTipDlg::IDD)
{
	//{{AFX_DATA_INIT(CToolTipDlg)
	m_nHoverTime = 0;
	m_nDisplayTime = 0;
	m_nBottomMargin = 0;
	m_nLeftMargin = 0;
	m_nRightMargin = 0;
	m_nTopMargin = 0;
	m_nWidth = 0;
	m_bAlwaysTip = FALSE;
	m_bNoPrefix = FALSE;
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= ~PSP_HASHELP;
}

CToolTipDlg::~CToolTipDlg()
{
}

void CToolTipDlg::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CToolTipDlg)
	DDX_Control(pDX, IDC_TOOLTIP_BACKYELLOW, m_ctlBackYellow);
	DDX_Control(pDX, IDC_TOOLTIP_BACKWHITE, m_ctlBackWhite);
	DDX_Control(pDX, IDC_TOOLTIP_BACKMAGENTA, m_ctlBackMagenta);
	DDX_Control(pDX, IDC_TOOLTIP_BACKGREEN, m_ctlBackGreen);
	DDX_Control(pDX, IDC_TOOLTIP_BACKCYAN, m_ctlBackCyan);
	DDX_Control(pDX, IDC_TOOLTIP_BACKBLACK, m_ctlBackBlack);
	DDX_Control(pDX, IDC_TOOLTIP_TEXTBLACK, m_ctlTextBlack);
	DDX_Control(pDX, IDC_TOOLTIP_TEXTBLUE, m_ctlTextBlue);
	DDX_Control(pDX, IDC_TOOLTIP_TEXTGRAY, m_ctlTextGray);
	DDX_Control(pDX, IDC_TOOLTIP_TEXTGREEN, m_ctlTextGreen);
	DDX_Control(pDX, IDC_TOOLTIP_TEXTRED, m_ctlTextRed);
	DDX_Control(pDX, IDC_TOOLTIP_TEXTWHITE, m_ctlTextWhite);
	DDX_Text(pDX, IDC_TOOLTIP_HOVERTIME, m_nHoverTime);
	DDX_Text(pDX, IDC_TOOLTIP_DISPLAYTIME, m_nDisplayTime);
	DDX_Text(pDX, IDC_TOOLTIP_BOTTOMMARGIN, m_nBottomMargin);
	DDX_Text(pDX, IDC_TOOLTIP_LEFTMARGIN, m_nLeftMargin);
	DDX_Text(pDX, IDC_TOOLTIP_RIGHTMARGIN, m_nRightMargin);
	DDX_Text(pDX, IDC_TOOLTIP_TOPMARGIN, m_nTopMargin);
	DDX_Text(pDX, IDC_TOOLTIP_WIDTH, m_nWidth);
	DDX_Check(pDX, IDC_TOOLTIP_ALWAYSTIP, m_bAlwaysTip);
	DDX_Check(pDX, IDC_TOOLTIP_NOPREFIX, m_bNoPrefix);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CToolTipDlg, CPropertyPage)
	//{{AFX_MSG_MAP(CToolTipDlg)
	ON_BN_CLICKED(IDC_TOOLTIP_ALWAYSTIP, OnTooltipAlwaystip)
	ON_BN_CLICKED(IDC_TOOLTIP_NOPREFIX, OnTooltipNoprefix)
	ON_EN_CHANGE(IDC_TOOLTIP_TOPMARGIN, OnChangeTooltipTopmargin)
	ON_EN_CHANGE(IDC_TOOLTIP_BOTTOMMARGIN, OnChangeTooltipBottommargin)
	ON_EN_CHANGE(IDC_TOOLTIP_LEFTMARGIN, OnChangeTooltipLeftmargin)
	ON_EN_CHANGE(IDC_TOOLTIP_RIGHTMARGIN, OnChangeTooltipRightmargin)
	ON_BN_CLICKED(IDC_TOOLTIP_HOVERSTATIC, OnTooltipHoverstatic)
	ON_EN_CHANGE(IDC_TOOLTIP_DISPLAYTIME, OnChangeTooltipDisplaytime)
	ON_BN_CLICKED(IDC_TOOLTIP_SETALL, OnTooltipSetall)
	ON_WM_LBUTTONDBLCLK()
	ON_EN_CHANGE(IDC_TOOLTIP_WIDTH, OnChangeTooltipWidth)
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
	ON_NOTIFY_EX(TTN_GETDISPINFO, 0, OnToolTipText)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CToolTipDlg message handlers

BOOL CToolTipDlg::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

	CRect rc;
	m_ctlTextWhite.SetBkgndColor (RGB(0xff, 0xff, 0xff));
	m_ctlTextRed.SetBkgndColor (RGB(0xff, 0x00, 0x00));
	m_ctlTextGreen.SetBkgndColor (RGB(0x00, 0xff, 0x00));
	m_ctlTextGray.SetBkgndColor (RGB(0xc0, 0xc0, 0xc0));
	m_ctlTextBlue.SetBkgndColor (RGB(0x00, 0x00, 0xff));
	m_ctlTextBlack.SetBkgndColor (RGB(0x00, 0x00, 0x00));

	m_ctlBackBlack.SetBkgndColor (RGB(0x00, 0x00, 0x00));
	m_ctlBackYellow.SetBkgndColor (RGB(0xff, 0xff, 0xa0));
	m_ctlBackMagenta.SetBkgndColor (RGB(0xff, 0xa0, 0xff));
	m_ctlBackGreen.SetBkgndColor (RGB(0x90, 0xff, 0x90));
	m_ctlBackCyan.SetBkgndColor (RGB(0xa0, 0xff, 0xff));
	m_ctlBackWhite.SetBkgndColor (RGB(0xff, 0xff, 0xff));

	m_ToolTips.Create (this);
	AddControls ();
	m_ToolTips.Activate (TRUE);
	m_ToolTips.GetMargin (rc);
	m_nTopMargin = rc.top;
	m_nBottomMargin = rc.bottom;
	m_nLeftMargin = rc.left;
	m_nRightMargin = rc.right;

	m_ToolTips.EnableToolTips ();

	int nDelay = m_ToolTips.GetDelayTime (TTDT_INITIAL);
	m_nHoverTime = nDelay;
	nDelay = m_ToolTips.GetDelayTime (TTDT_AUTOPOP);
	m_nDisplayTime = nDelay;
	m_nWidth = m_ToolTips.GetMaxTipWidth ();
	
	UpdateData (FALSE);

	return TRUE;
}

BOOL CToolTipDlg::OnToolTipText(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
	TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
	UINT nID =pNMHDR->idFrom;
// is idFrom is actually the HWND of the tool?
	if (pTTT->uFlags & TTF_IDISHWND)
	{
		  nID = ::GetDlgCtrlID((HWND)nID);
	}
	if(nID)
	{
		pTTT->lpszText = MAKEINTRESOURCE(nID);
		pTTT->hinst = AfxGetResourceHandle();
		return(TRUE);
	}
	return(FALSE);
}

void CToolTipDlg::AddControls()
{
const UINT nCtrlIDs [] =
	{
//	The time group
	IDC_TOOLTIP_HOVERTIME, IDC_TOOLTIP_DISPLAYTIME,
//	The margins group
	IDC_TOOLTIP_TOPMARGIN, IDC_TOOLTIP_BOTTOMMARGIN,
	IDC_TOOLTIP_LEFTMARGIN, IDC_TOOLTIP_RIGHTMARGIN,
	IDC_TOOLTIP_WIDTH, IDC_TOOLTIP_SETALL,
//	The style group
	IDC_TOOLTIP_ALWAYSTIP, IDC_TOOLTIP_NOPREFIX
	};

	CRect rc;
	UINT n;
	for (n = 0; n < 10; ++n)
	{
		m_ToolTips.AddControl (GetDlgItem(nCtrlIDs[n]));
	}

	const UINT nRectIDs [] =
	{
	IDC_TOOLTIP_TEXTWHITE, IDC_TOOLTIP_TEXTBLACK,
	IDC_TOOLTIP_TEXTGREEN, IDC_TOOLTIP_TEXTGRAY,
	IDC_TOOLTIP_TEXTBLUE, IDC_TOOLTIP_TEXTRED,
	IDC_TOOLTIP_BACKWHITE, IDC_TOOLTIP_BACKBLACK,
	IDC_TOOLTIP_BACKCYAN, IDC_TOOLTIP_BACKMAGENTA,
	IDC_TOOLTIP_BACKYELLOW, IDC_TOOLTIP_BACKGREEN
	};

	for (n = 0; n < (sizeof(nRectIDs)/sizeof (int)); ++n)
	{
		::GetWindowRect (GetDlgItem (nRectIDs[n])->m_hWnd, rc);
		ScreenToClient (rc);
		m_ToolTips.AddRect (this, nRectIDs[n], rc);
	}
	CRect rcBlank;
	::GetWindowRect (GetDlgItem (IDC_TOOLTIP_STYLEGROUP)->m_hWnd, rc);
	ScreenToClient (rc);
	rcBlank.top = rc.bottom + 10;

	::GetWindowRect (GetDlgItem (IDC_TOOLTIP_BACKCOLORGROUP)->m_hWnd, rc);
	ScreenToClient (rc);
	rcBlank.left = rc.right + 10;
	rcBlank.bottom = rc.bottom;


	::GetWindowRect (GetDlgItem (IDC_TOOLTIP_MARGINSGROUP)->m_hWnd, rc);
	ScreenToClient (rc);
	rcBlank.right = rc.left - 10;
	m_ToolTips.AddRect (this, IDS_BLANKSPOT, rcBlank);
}

void CToolTipDlg::OnTooltipAlwaystip() 
{
	UpdateData (TRUE);
	if (m_bAlwaysTip)
		m_ToolTips.ModifyStyle (0, TTS_ALWAYSTIP, TRUE);
	else
		m_ToolTips.ModifyStyle (TTS_ALWAYSTIP, 0, TRUE);
}

void CToolTipDlg::OnChangeTooltipWidth() 
{
	UpdateData (TRUE);
	m_ToolTips.SetMaxTipWidth (m_nWidth);
}

void CToolTipDlg::OnChangeTooltipTopmargin() 
{
	UpdateData (TRUE);
	CRect rc;
	m_ToolTips.GetMargin (rc);
	rc.top = m_nTopMargin;
	m_ToolTips.SetMargin (rc);
}

void CToolTipDlg::OnChangeTooltipBottommargin() 
{
	UpdateData (TRUE);
	CRect rc;
	m_ToolTips.GetMargin (rc);
	rc.bottom = m_nBottomMargin;
	m_ToolTips.SetMargin (rc);
}

void CToolTipDlg::OnChangeTooltipLeftmargin() 
{
	UpdateData (TRUE);
	CRect rc;
	m_ToolTips.GetMargin (rc);
	rc.left = m_nLeftMargin;
	m_ToolTips.SetMargin (rc);
}

void CToolTipDlg::OnChangeTooltipRightmargin() 
{
	UpdateData (TRUE);
	CRect rc;
	m_ToolTips.GetMargin (rc);
	rc.right = m_nRightMargin;
	m_ToolTips.SetMargin (rc);
}

void CToolTipDlg::OnTooltipHoverstatic() 
{
	UpdateData (TRUE);
	m_ToolTips.SetDelayTime (m_nHoverTime, TTDT_INITIAL);
}

void CToolTipDlg::OnChangeTooltipDisplaytime() 
{
	UpdateData (TRUE);
	m_ToolTips.SetDelayTime (m_nDisplayTime, TTDT_AUTOPOP);
}

void CToolTipDlg::OnTooltipSetall() 
{
	UpdateData (TRUE);
	CRect rc;
	m_nBottomMargin = m_nTopMargin;
	m_nLeftMargin = m_nTopMargin;
	m_nRightMargin = m_nTopMargin;
	rc.top = m_nTopMargin;
	rc.bottom = m_nBottomMargin;
	rc.left = m_nLeftMargin;
	rc.right = m_nRightMargin;
	m_ToolTips.SetMargin (rc);
	UpdateData (FALSE);
}

void CToolTipDlg::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	CRect rc;
	::GetWindowRect (GetDlgItem(IDC_TOOLTIP_TEXTCOLORGROUP)->m_hWnd, rc);
	ScreenToClient (rc);
	if (rc.PtInRect (point))
	{
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_TEXTBLACK)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipTextblack();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_TEXTGREEN)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipTextgreen();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_TEXTBLUE)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipTextblue();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_TEXTGRAY)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipTextgray();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_TEXTRED)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipTextred();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_TEXTWHITE)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipTextwhite();
			return;
		}
	}
	::GetWindowRect (GetDlgItem(IDC_TOOLTIP_BACKCOLORGROUP)->m_hWnd, rc);
	ScreenToClient (rc);
	if (rc.PtInRect (point))
	{
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_BACKWHITE)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipBackwhite();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_BACKMAGENTA)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipBackmagenta();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_BACKYELLOW)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipBackyellow();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_BACKGREEN)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipBackgreen();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_BACKCYAN)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipBackcyan();
			return;
		}
		::GetWindowRect (GetDlgItem(IDC_TOOLTIP_BACKBLACK)->m_hWnd, rc);
		ScreenToClient (rc);
		if (rc.PtInRect (point))
		{
			OnTooltipBackblack();
			return;
		}
	}
	CPropertyPage::OnLButtonDblClk(nFlags, point);
}

void CToolTipDlg::OnTooltipNoprefix() 
{
	UpdateData (TRUE);
	if (m_bAlwaysTip)
		m_ToolTips.ModifyStyle (0, TTS_NOPREFIX, TRUE);
	else
		m_ToolTips.ModifyStyle (TTS_NOPREFIX, 0, TRUE);
}

void CToolTipDlg::OnTooltipBackblack() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_BACKBLACK);
	m_ToolTips.SetTipBkColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipBackcyan() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_BACKCYAN);
	m_ToolTips.SetTipBkColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipBackgreen() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_BACKGREEN);
	m_ToolTips.SetTipBkColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipBackmagenta() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_BACKMAGENTA);
	m_ToolTips.SetTipBkColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipBackwhite() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_BACKWHITE);
	m_ToolTips.SetTipBkColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipBackyellow() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_BACKYELLOW);
	m_ToolTips.SetTipBkColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipTextblack() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_TEXTBLACK);
	m_ToolTips.SetTipTextColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipTextblue() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_TEXTBLUE);
	m_ToolTips.SetTipTextColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipTextgray() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_TEXTGRAY);
	m_ToolTips.SetTipTextColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipTextgreen() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_TEXTGREEN);
	m_ToolTips.SetTipTextColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipTextred() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_TEXTRED);
	m_ToolTips.SetTipTextColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

void CToolTipDlg::OnTooltipTextwhite() 
{
	CStaticEx *color = (CStaticEx *) GetDlgItem(IDC_TOOLTIP_TEXTWHITE);
	m_ToolTips.SetTipTextColor (color->GetBkgndColor());
	m_ToolTips.Update ();
}

CToolTips & CToolTipDlg::GetToolTipControl()
{
	return (m_ToolTips);
}

void CToolTipDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
	int xPos, yPos;
	xPos = point.x;
	yPos = point.y;
	MSG msg;
	msg.hwnd = this->m_hWnd;
	msg.message = WM_MOUSEMOVE;
	msg.wParam = (WPARAM) nFlags;
	msg.lParam = MAKELONG (xPos, yPos);
	m_ToolTips.RelayEvent (&msg);
	CPropertyPage::OnMouseMove(nFlags, point);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -