欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    TTNNEEDTEXT一般用法和高级用法OnToolTip函数Word格式.docx

    • 资源ID:8405249       资源大小:20.03KB        全文页数:9页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    TTNNEEDTEXT一般用法和高级用法OnToolTip函数Word格式.docx

    1、 CToolTipCtrl m_tt; 在OnCreate中添加需要显示Tip的子窗口OnCreate(.) EnableToolTips(TRUE); m_tt.Create(this); m_tt.Activate(TRUE); CWnd* pW=GetDlgItem(IDC_CHECK1);/得到窗口指针 m_tooltip.AddTool(pW,Check1);/添加 . 在BOOL pMsg)中添加代码PreTranslateMessage(MSG* m_tt.RelayEvent(pMsg); return CParentClass:PreTranslateMessage(pMsg

    2、); 这样当鼠标移动到相应的子窗口上时会显示出相应的ToolTip。 动态改变ToolTip的显示内容的方法及步骤: 上面所讲的1、2、4步骤。 在增加ToolTip时不指定显示的字串,而是使用LPSTR_TEXTCALLBACK。 在窗口中增加消息映射 ON_NOTIFY_EX( TTN_NEEDTEXT, 0, SetTipText )。 在窗口中增加一个函数用于动态提供显示内容,其原型为 SetTipText( UINT id, NMHDR * pTTTStruct, LRESULT pResult ),下面的代码可以根据传入的参数判定应该显示的内容。SetTipText( ) TOOL

    3、TIPTEXT *pTTT = (TOOLTIPTEXT *)pTTTStruct; nID =pTTTStruct-idFrom; /得到相应窗口ID,有可能是HWND if (pTTT-uFlags & TTF_IDISHWND) /表明nID是否为HWND :GetDlgCtrlID(HWND)nID);/从HWND得到ID值,当然你也可以通过HWND值来判断 switch(nID) case(IDC_YOUR_CONTROL1) strcpy(pTTT-lpszText,your_string1);/设置 TRUE; break; case(IDC_YOUR_CONTROL2) /设置

    4、相应的显示字串 return(FALSE); 我用VC做TOOL TIP很多次了,但每次都要再研究一遍.虽然说学而时习,应该的,但主要还是由于自己懒.今天一定要记下来.以后再用的时候,就是参考.也请阅读此文的朋友记下来,将来查阅用.用VC实现TOOL TIP.比较复杂,其实也简单,但MFC帮助一些窗口实现,而另一些窗口又不实现,倒搞得复杂了.最开始我用WM_MOUSEMOVE消息,然后用CToolTipCtrl:Pop,这个方法太笨.不建议用.除非需要自定义.MFC对TOOL TIP的支持不错的.缺省情况CFrameWnd支持很好.然后是CWnd.主要体现在TTN_NEEDTEXT消息的支持和

    5、OnToolHitTest的支持.TTN_NEEDTEXT是在CFrameWnd中支持的.OnToolHitTest是在CWnd中支持的.有了这些支持,可以在框架窗口中很好实现ToolBar的TIP.和在一个对话框中很好实现一个控件的TOOL TIP.举例.在对话框中实现TOOL TIP.1.EnableToolTips( TRUE )是不可少的.建议在:CDialog:OnInitDialog 调用吧.2.ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnNeedText ).OnNeedText实现了TOOL TIP的文字.传入的参数idFrom是控件的ID,根据控件ID得

    6、到相应的TIP文字就这么简单的两步,就实现了对话框中的TOOL TIP.其实不只对话框,任何窗口都可以用上面的方法实现自己的子窗口控件的TIP.但前提是必须是CWnd的派生类.这就看出了MFC对TOOL TIP的支持很厉害但这一切都是MFC实现的我们简单描述一下它的实现原理,这样看得更清楚CWnd本身就带有一个CToolTipCtrl对象,是放在pThreadState中的这个不说了,知道CWnd有就行了CWnd负责创建它,然后在PreTranslateMessage中调用了FilterToolTipMessage,这个函数的作用是处理WM_MOUSEMOVE,WM_NCMOUSEMOVE等消

    7、息,给CToolTipCtrl一个机会,判断鼠标是否在需要显示TIP的窗口上,如果是,就显示.FilterToolTipMessage先从CWnd:OnToolHitTest得到TOOLINFO:中的数据,比如哪个控件需要TIP等信息,然后利用ADDTOOL消息把这个需要TIP的控制加入到CToolTipCtrl的TOOL列表中,然后将鼠标移动的消息转给CToolTipCtrl处理.如果这个TIP的文字需要用回调函数来获得,就用WM_NOTIFY的TTN_NEEDTEXT从CToolTipCtrl的父窗口获取.这个过程就是CToolTipCtrl判断是否要显示TIP,到获得文字并显示TIP的全

    8、过程这样一分析,就知道原来CWnd帮助实现了控件子窗口的TIP其实就是实现了OnToolHitTest这个函数,然后在PreTranslateMessage中转发消息,帮助CToolTipCtrl正确显示TIP.而CFrameWnd是实现了TTN_NEEDTEXT的响应,帮助子窗口实现TIP.其实我们也可以不要这些缺省实现,自己用CToolTipCtrl搞定,做法一样:1.CToolTipCtrl:Create创建Tool Tip2.AddTool增加一个TOOL,这里的TOOL就是需要显示TIP的一个区域或一个子窗口.如果对AddTool使用有不清楚的地方,建议查看源程序.可能会觉得直接使用

    9、TTM_ADDTOOL更方便.3.在PreTranslateMessage中调用CToolTipCtrl:RelayMessage4.如果在AddTool中,文字是用回调函数实现,那就要处理TTN_NEEDTEXT消息.其实自己创建CToolTipCtrl和MFC做的一样.只是不需要在OnToolHitTest中给出需要显示TIP的窗口或者区域.如果给子窗口用TIP.就用MFC最简单.如果给自己呢?设置TOOLINFO中的uFlags = TTF_IDISHWND,然后设置uId为窗口句柄,hWnd为窗口句柄就可以了.写了这么多,有不对的地方还请和我联系一下,帮助我改正错误.只是有个问题还没搞

    10、明白.就是为什么MFC把CToolTipCtrl放在了pThreadState中.难道是为了用一个TOOL TIP为该线程的所有窗口服务吗?难道是一种节约资源的表现.这点还需要研究.如果哪位朋友知道答案,还希望能不吝赐教.谢谢.用VC实现TOOL TIP2008-03-17 13:57按照下面的步骤去做:1、先为static设置一个ID,如ID_TIP;2、在CDialogBar的头文件中的AFX_MSG内加入一行申明afx_msg BOOL OnToolTip(UINT id,NMHDR * pNMHDR,LRESULT * pResult);3、在CDialogBar的CPP文件中的AFX

    11、_MSG_MAP内加入一行ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTip)4、在CDialogBar的CPP文件中的OnInitDialog()函数内加入EnableToolTips(TRUE);5、在CDialogBar的CPP文件中添加OnToolTip函数BOOL CDialogBar:OnToolTip(UINT id,NMHDR * pNMHDR,LRESULT * pResult)TOOLTIPTEXT * pTTT=(TOOLTIPTEXT *)pNMHDR;UINT uID = pNMHDR-if(pTTT-uFlags &uID = :GetDlg

    12、CtrlID(HWND)uID);if(uID = NULL) return FALSE;switch(uID)case IDC_TIP:pTTT-lpszText=添加你的提示内容;break;return TRUE;这样就可以了。其实,上面的方法可以为任何控件添加tip提示。难道是一种节约资源的表现.这点还需要研究.如果哪位朋友知道答案,还希望能不吝赐教.谢谢/头文件加入CToolTipCtrl m_tooltip;/主窗口初始化时加入m_tooltip.Create(this);m_tooltip.Activate(TRUE);m_tooltip.AddTool(GetDlgItem(I

    13、DC_nametext为你控件的ID,为显示的内容利用ClassWizard建立PreTranslateMessageBOOL CTest5Dlg:PreTranslateMessage(MSG* pMsg)m_tooltip.RelayEvent(pMsg); /你加入的代码return CDialog:如何用VC+实现在对话框的控件上显示ToolTip 并在状态条上显示控件的信息湖南省邮电五二六厂肖天鹏- 利用 VC+ 的 AppWizard,可以很容易地实现工具条和菜单项的 ToolTip 或在状态条上显 示帮助信息,但要在对话框的控件上显示 ToolTip 并在状态条上显示控件信息并不

    14、是那么容易, 其实,利用 VC+ 中的 WM_SETCURSOR 与 TTN_NEEDTEXT 消息就可达到目的。具体操作如下:- 一- 利用 VC+ 的 MFC AppWizard 生成一个 SDI 或 MDI 的应用程序- 二- 编辑对话框控件的字符串资源- 例如:- IDC_DBBUTTON1 = this is 肖天鹏的第一自制按钮n天 鹏, 其中字符串this is 肖天鹏的第一自制按钮将在鼠标移到控件上时显示在状态条上,字符串天 鹏将作为 ToolTip 显示。- 三- 建立消息映射。- 在对话框的头文件 (*.H) 中加入以下代码:protected: void SetStatu

    15、sText(UINT nID=0); /AFX_MSG(CFileOp1) afx_msg void OnDestroy(); afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); /AFX_MSG afx_msg BOOL OnTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult ); DECLARE_MESSAGE_MAP()- 在对话框的实现文件 (*.CPP) 中加入以下代码:BEGIN_MESSAGE_MAP(CFileOp1, CDialog) /A

    16、FX_MSG_MAP(CFileOp1) ON_WM_DESTROY() ON_WM_SETCURSOR() /AFX_MSG_MAP ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnTipNotify)END_MESSAGE_MAP()- 四- 编辑消息处理函数。BOOL CFileOp1:OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)/ TODO: Add your message handlercode here and/or call default if(pWnd=this) SetStatusText(); el

    17、se TOOLTIPTEXT m_psttt; m_psttt.hdr.hwndFrom=m_hWnd; m_psttt.hdr.idFrom=pWnd- GetDlgCtrlID(); m_psttt.hdr.code=TTN_NEEDTEXT; m_psttt.uFlags= TTF_IDISHWND; SetStatusText(pWnd- GetDlgCtrlID(); this- SendMessage(WM_NOTIFY, m_psttt.hdr.idFrom,(LPARAM)&m_psttt);(pWnd, nHitTest, message);void CFileOp1:OnD

    18、estroy() CDialog:OnDestroy();SetStatusText(UINT nID) if(nID=0) nID=AFX_IDS_IDLEMESSAGE; CWnd *pWnd=AfxGetMainWnd()- GetDescendantWindow (AFX_IDW_STATUS_BAR); if(pWnd) AfxGetMainWnd()- SendMessage (WM_SETMESSAGESTRING ,nID); pWnd- SendMessage(WM_IDLEUPDATECMDUI);UpdateWindow();OnTipNotify( UINT id, N

    19、MHDR *pNMHDR, LRESULT * pResult ) TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR; UINT nID =pNMHDR- if (pTTT- TTF_IDISHWND) nID = : if(nID) TCHAR szFullText256; CString StrTipText; AfxLoadString(nID,szFullText); AfxExtractSubString(StrTipText, szFullText,1,n if(!StrTipText.IsEmpty() strcpy(pTTT- lpszText,StrTipText); pTTT-hinst = AfxGetResourceHandle(); return(TRUE);-


    注意事项

    本文(TTNNEEDTEXT一般用法和高级用法OnToolTip函数Word格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开