csdn_文档中心_怎样为任何控件和区域添加提示信息用自己封装的ctip类.htm
来自「csdn10年中间经典帖子」· HTM 代码 · 共 332 行 · 第 1/2 页
HTM
332 行
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD align=middle bgColor=#fafafa class=td1 vAlign=top width=150><BR>
<SCRIPT
src="CSDN_文档中心_怎样为任何控件和区域添加提示信息用自己封装的CTip类.files/microsoft.js"></SCRIPT>
</TD>
<TD align=middle width=620>
<TABLE bgColor=#eeeeee border=0 cellPadding=0 cellSpacing=0 width=600>
<TBODY>
<TR bgColor=#ffffff>
<TD align=middle height=10 width=50></TD>
<TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A
href="http://www.csdn.net/develop/">文档中心</A> - <FONT
color=#003399>Visual C++</FONT> </TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399 height=10><FONT
color=#ffffff>标题</FONT></TD>
<TD><B> 怎样为任何控件和区域添加提示信息:用自己封装的CTip类</B> flower(原作)
</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
<TD
width=500> 怎样为任何控件和区域添加提示信息:用自己封装的CTip类</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
<TABLE border=0 width=600>
<TBODY>
<TR>
<TD align=left><BR>MFC中有一个CToolTipCtrl类,想必大家都知道,近来我在一个项目中需要在ActiveX
Control上为特定的控件或区域添加提示.开始使用CToolTipCtrl,但发现它根本就不工作.无奈,只好自己写了一个类来实现它.<BR>该类为CTip(包含CTip.c和CTip.h)<BR>你只需在你的工程中加入它,就可以使用.<BR>使用步骤:<BR>
1.在初始化时Create(CWnd* pParentWnd).<BR>
2.在MoseMove(CPoint point)中调用SetText(const
CString& rsText)来设置要显示的文本.<BR>
3.在MoseMove(CPoint point)中调用Show(CPoint
point)显示该提示.<BR>使用说明:<BR>
1.Create中所作的是用CreateEX来创建一个窗口,这个窗口的大小为0,显示标题为空,风格为WS_POPUP¦WS_CHILD¦WS_CLIPSIBLINGS<BR>
2.这里有一个技巧,你必须知道当你的鼠标位于哪个范围时,该提示应当出现.因此你可以有两种选择:之一,你直接指定该范围(设置一个CRect)或是添加一个成员变量来动态记录该范围;之二,你可以调用如下:
<BR> CRect rect;<BR>
CWnd* pwnd = GetDlgItem(ID_xxx);<BR>
pwnd->GetWindowRect(&rect);<BR>
ScreenToClient(&rect);<BR>
这样也可以得到当前的rect.然后你可以调用如下:<BR>
if(rect.PtInRect(point))<BR>
{<BR>
m_tip.SetText(m_varname);<BR>
m_tip.Show(point);<BR>
}<BR> else <BR>
{ <BR>
m_tip.Close();<BR>
}<BR>
3.show和close用来显示和隐藏提示,在show中主要是利用CDC来进行绘制提示.<BR>几个主要函数的具体代码:<BR>BOOL
CToolTip2::Create(CWnd* pParentWnd)<BR>{<BR>ASSERT(this != NULL
);<BR>ASSERT(pParentWnd != NULL);<BR><BR>m_pParentWnd =
pParentWnd;<BR>// Create font<BR>CRect
rectInitialSize(0,0,0,0);//Initial Window size. Will be dynamically
<BR>return CreateEx(NULL, NULL, NULL,WS_POPUP ¦ WS_CHILD ¦
WS_CLIPSIBLINGS,<BR> rectInitialSize,pParentWnd, NULL,
NULL);<BR>}<BR><BR>BOOL CToolTip2::Show(const CPoint&
rCurrentPoint)<BR>{<BR>ASSERT(this != NULL );<BR>ASSERT(m_hWnd !=
NULL );<BR>// Is text empty or tool tip already
displayed?<BR>if ( m_szText.IsEmpty() ¦¦ m_bShowStatus)<BR>
return FALSE;<BR>m_ptCurrent = rCurrentPoint;<BR>m_bShowStatus =
TRUE;<BR>// show tool
tip<BR>DisplayToolTip(rCurrentPoint);<BR>return
TRUE;<BR>}<BR><BR>void CToolTip2::DisplayToolTip(const CPoint&
rCurrentPoint)<BR>{<BR>CDC* pDC = GetDC();<BR>CBrush
*pOldBrush;<BR>CFont *pOldFont;<BR><BR>pOldFont =
pDC->SelectObject(&m_font);<BR>CSize size =
pDC->GetTextExtent(m_szText);<BR>pDC->LPtoDP(&size);<BR>//
form tooltip rectangle<BR>CRect rectToolTip(rCurrentPoint.x,
rCurrentPoint.y, <BR>rCurrentPoint.x+size.cx+7,
rCurrentPoint.y+size.cy+2);<BR>// draw Tooltip Rect and
Text<BR>pDC->SetBkMode(TRANSPARENT);<BR>CBrush
brushToolTip(GetSysColor(COLOR_INFOBK));<BR>pOldBrush =
pDC->SelectObject(&brushToolTip);<BR>// Create and
select thick black pen<BR>CPen penBlack(PS_SOLID, 0, COLORREF(RGB(0,
0, 0)));<BR>CPen* pOldPen =
pDC->SelectObject(&penBlack);<BR>// draw rectangle
filled with
COLOR_INFOBK<BR>pDC->Rectangle(0,0,rectToolTip.Width(),rectToolTip.Height());<BR>//
draw tooltip text<BR> pDC->SetTextColor(
GetSysColor(COLOR_INFOTEXT) );//Tool Tip color set in <BR>//
control panel
settings<BR>pDC->SetTextAlign(TA_LEFT);<BR>pDC->TextOut(3,1,
m_szText);<BR>CRect rectWnd =
rectToolTip;<BR>m_pParentWnd->ClientToScreen(rectWnd); //
Convert from client to screen <BR>CPoint ptToolTipLeft =
rectWnd.TopLeft();<BR>// now display
tooltip<BR>SetWindowPos(&wndTop,ptToolTipLeft.x+1,
ptToolTipLeft.y+1, rectWnd.Width(),
<BR>rectWnd.Height(),SWP_SHOWWINDOW¦SWP_NOOWNERZORDER¦SWP_NOACTIVATE);<BR>//
put back old
objects<BR>pDC->SelectObject(pOldBrush);<BR>pDC->SelectObject(pOldPen);<BR>pDC->SelectObject(pOldFont);<BR>ReleaseDC(pDC);<BR>}<BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0
width=770>
<TBODY>
<TR bgColor=#006699>
<TD align=middle bgColor=#006699 id=white><FONT
color=#ffffff>对该文的评论</FONT></TD>
<TD align=middle>
<SCRIPT
src="CSDN_文档中心_怎样为任何控件和区域添加提示信息用自己封装的CTip类.files/readnum.htm"></SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16
hspace=1 src="CSDN_文档中心_怎样为任何控件和区域添加提示信息用自己封装的CTip类.files/ico_pencil.gif"
width=16> </SPAN> wuya <I>(2000-12-19 9:54:04)</I>
</TD></TR>
<TR>
<TD bgColor=#ffffff colSpan=3 width=532><BR>CToolTipCtrl可以完成这样的功能,你走远了。
<BR></TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TH bgColor=#006699 id=white><FONT
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD>你没有登陆,无法发表评论。 请先<A
href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=773">登陆</A>
<A
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
<TBODY>
<TR align=middle>
<TD height=10 vAlign=bottom><A
href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A
href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A
href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A
href="http://www.csdn.net/english">English</A> </TD>
<TD align=middle rowSpan=3><A
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG
border=0 height=48
src="CSDN_文档中心_怎样为任何控件和区域添加提示信息用自己封装的CTip类.files/biaoshi.gif"
width=40></A></TD></TR>
<TR align=middle>
<TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
<TR align=middle>
<TD vAlign=top><FONT face=Verdana>Copyright © CSDN.net, Inc. All rights
reserved</FONT></TD></TR>
<TR>
<TD height=15></TD>
<TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?