Download demo project - 23 KbDownload source files - 5 Kb
A titletip is similar to a tooltip, but is used to
display data in a control that is otherwise not large enough to display the full
text. We are all used to seeing cell titletips that display contents that are hidden by
the width of the cell. These titletips typically use a single line. If the contents are
greater than the single line, they were truncated.
The code presents a titletip class that can show the
complete contents of a cell regardless of its size. The titletip window will
adjust itself up or down depending on the cell being displayed, and will take
into account the size of the parent's client area, and that of the screen. It will do its utmost to show you that data!
This article is based on code written by Zafir
Anjum, but has been extensively reworked to add a great deal of new
functionality.
How to use CTitleTip
Using the class is extremely easy. Just declare an object of type
CTitleTip
in your main windows' header, and then create the
title tip window in your dialog's OnInitDialog
, or your
view's OnInitialUpdate
:
class CTitleTipDemoDlg : public CDialog
{
...
CTitleTip m_TitleTip;
}
BOOL CTitleTipDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
m_TitleTip.Create(this);
return TRUE;
}
You then need to add a mouse over handler so that when the mouse cursor
moves over controls that may contain large amounts of text, you can popup
a title tip to display that text. For instance, in our demo dialog we have
a static control (m_staticText
) that displays a lot of text.
Just add an OnMouseMove
handler and add the following code:
void CTitleTipDemoDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CRect rect;
m_staticText.GetWindowRect(rect);
ScreenToClient(rect);
if (rect.PtInRect(point))
{
CString str;
m_staticText.GetWindowText(str);
m_TitleTip.Show(rect, str, 0, 80);
}
CDialog::OnMouseMove(nFlags, point);
}
The CTitleTip::Show
function has the following syntax
void Show(CRect rectTitle,
LPCTSTR lpszTitleText,
int xoffset = 0,
int nMaxChars = -1,
LPRECT lpHoverRect = NULL,
LPLOGFONT lpLogFont = NULL)
If nMaxChars is less than 0, then the text will only wrap where there is insufficient room
to display the entire line.
if lpHoverRect is NULL then it will be set as rectTitle.
Chris Maunder is the co-founder of
CodeProject, DeveloperMedia and ContentLab, and has been a prominent figure in the software development community for nearly 30 years. Hailing from Australia, Chris has a background in Mathematics, Astrophysics, Environmental Engineering and Defence Research. His programming endeavours span everything from FORTRAN on Super Computers, C++/MFC on Windows, through to to high-load .NET web applications and Python AI applications on everything from macOS to a Raspberry Pi. Chris is a full-stack developer who is as comfortable with SQL as he is with CSS.
In the late 1990s, he and his business partner David Cunningham recognized the need for a platform that would facilitate knowledge-sharing among developers, leading to the establishment of CodeProject.com in 1999. Chris's expertise in programming and his passion for fostering a collaborative environment have played a pivotal role in the success of CodeProject.com. Over the years, the website has grown into a vibrant community where programmers worldwide can connect, exchange ideas, and find solutions to coding challenges. Chris is a prolific contributor to the developer community through his articles and tutorials, and his latest passion project,
CodeProject.AI.
In addition to his work with CodeProject.com, Chris co-founded ContentLab and DeveloperMedia, two projects focussed on helping companies make their Software Projects a success. While at CodeProject, Chris' roles included Architecture and coding, Product Development, Content Creation, Community Growth, Client Satisfaction and Systems Automation, and many, many sales meetings. All while keeping his sense of humour.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.