📄 tooltipdlg.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 + -