ActiveX控件中如何显示tooltip
来源:互联网 发布:知乎英语四级作文 编辑:程序博客网 时间:2024/04/29 07:14
默认情况下,ActiveX 控件不支持工具提示。下面的步骤,但是,演示如何修改生成使用 MFC ActiveX 控件向导来添加该支持基本的 ActiveX 控件:
- 通过使用 MFC ActiveX 控件模板来创建新的 Visual C++ 项目。将新控件命名为Basic
- 打开与该项目相关联的 Stdafx.h 文件并添加下面的行。注意Visual C++.NET 中不执行此步骤。Afxcmn.h 的头文件包含用作包装到 Windows 公共控件包括 CToolTipCtrl 的 MFC 类的声明。
#include <afxcmn.h>
- 位于 BasicCtrl.h 的 CBasicCtrl COleControl 派生的类中添加以下行。鼠标消息处理程序将用 RelayEvent 方法来将这些信息中继到工具提示控件。
CToolTipCtrl m_ttip; void RelayEvent(UINT message, WPARAM wParam, LPARAM lParam);
- 将 WM_CREATE 消息处理程序添加到 CBasicCtrl 消息映射中。若要执行此操作,请单击在类视图窗口中选择 CBasicCtrl。CBasicCtrl 节点处于选中状态,打开属性窗口,然后单击要选择的邮件。找到 WM_CREATE 的邮件,然后再添加一个 OnCreate 方法来处理该消息。它是此例程中将创建工具提示控件。将下面的代码添加到该处理程序。
if (!m_ttip.Create(this)) TRACE0("Unable to create tip window."); else if (!m_ttip.AddTool(this, LPCTSTR(m_ToolTipText))) TRACE0("Unable to add tip for the control window."); else m_ttip.Activate(m_ShowToolTip);
- 为中继到该工具提示控件相应的消息,添加 WM_LBUTTONDOWN、 WM_LBUTTONUP,和 WM_MOUSEMOVE CBasicCtrl 消息映射到处理程序。这些处理程序的代码后面。虽然这可能看起来合理调用 CWnd::GetCurrentMessage,而不是手动生成一条消息,则点,则返回的值是以屏幕坐标表示。当工具提示执行命中的测试,以确定是否任何相关的工具的客户端矩形的边界内中继的消息不断下降的点,则测试将失败,并且将不会显示工具提示。
void CBasicCtrl::OnLButtonDown(UINT nFlags, CPoint point) { RelayEvent(WM_LBUTTONDOWN, (WPARAM)nFlags, MAKELPARAM(LOWORD(point.x), LOWORD(point.y))); COleControl:: OnLButtonDown(nFlags, point); } void CBasicCtrl::OnLButtonUp(UINT nFlags, CPoint point) { RelayEvent(WM_LBUTTONUP, (WPARAM)nFlags, MAKELPARAM(LOWORD(point.x), LOWORD(point.y))); COleControl::OnLButtonUp(nFlags, point); } void CBasicCtrl::OnMouseMove(UINT nFlags, CPoint point) { RelayEvent(WM_MOUSEMOVE, (WPARAM)nFlags, MAKELPARAM(LOWORD(point.x), LOWORD(point.y))); COleControl::OnMouseMove(nFlags, point); } // implementation of the CBasicCtrl::RelayEvent method: void CBasicCtrl::RelayEvent(UINT message, WPARAM wParam, LPARAM lParam) { if (NULL != m_ttip.m_hWnd) { MSG msg; msg.hwnd= m_hWnd; msg.message= message; msg.wParam= wParam; msg.lParam= lParam; msg.time= 0; msg.pt.x= LOWORD (lParam); msg.pt.y= HIWORD (lParam); m_ttip.RelayEvent(&msg); } }
- 通过添加代码以初始化的 m_ToolTipText 和 m_ShowToolTip 属性来修改 CBasicCtrl::DoPropExchange。
PX_Bool(pPX, _T("ShowToolTip"), (BOOL&)m_ShowToolTip, FALSE);//In order to view tooltip, this must be true. PX_String(pPX, _T("ToolTipText"), m_ToolTipText, _T("")); //And we need to add some text in _T(“ ...”)
- 若要允许该用户控件的某些控制工具提示功能,请向 CBasicCtrl 类中添加以下的自动化属性。为此,请在类视图窗口中选择 BasicLib (此节点将显示有关该项目的 IDL 文件的类视图信息)。打开此节点,然后用鼠标右键单击主接口节点 (_DBasic)。单击添加,然后单击添加属性。添加列出的参数具有以下两个属性:ShowToolTip 将允许用户若要禁止显示的工具提示,并要将跟踪将用来显示工具提示时显示的文本。
Property Name: ShowToolTip ToolTipTextProperty Type: VARIANT_BOOL BSTRVariable name: m_ShowToolTip m_ToolTipTextNotification function: OnShowToolTipChanged OnToolTipTextChanged
- 按以下方式修改这些属性的属性更改通知函数。
void CBasicCtrl::OnToolTipTextChanged() { if (m_ttip.m_hWnd && AmbientUserMode()) { m_ttip.UpdateTipText(LPCTSTR(m_ToolTipText), this); SetModifiedFlag(); } } void CBasicCtrl::OnShowToolTipChanged() { if (m_ttip.m_hWnd && AmbientUserMode()) { m_ttip.Activate(m_ShowToolTip); SetModifiedFlag(); } }
原链接:http://support.microsoft.com/kb/141871/zh-cn
- ActiveX控件中如何显示tooltip
- activex控件中显示对话框
- Activex控件中显示MFC窗口方法
- 在bcb2006中如何安装ActiveX控件
- VS.2003 中如何创建ActiveX控件
- 如何在 ActiveX 控件中使用字体
- delphi2007中如何安装ActiveX控件
- ActiveX控件全屏显示
- C#中datagridview使用tooltip控件显示单元格内容与datagridview自带的tooltip显示单元格内容的方法
- 为ActiveX窗口上的自定义控件添加ToolTip
- 如何注册ActiveX控件
- 如何发布ActiveX 控件
- 如何删除ActiveX控件
- 如何发布ActiveX 控件
- 如何发布ActiveX 控件
- 如何删除ActiveX控件
- 如何删除ActiveX控件
- 如何注册activeX控件
- openstack主节点失败的补救方法
- 查找数组中只出现一次的数字
- AMF0 AMF3
- T4模版生成SpringMVC构造REST代码:第八篇 用T4模版生成请求实体类代码
- Google Maps Android API V2 开发
- ActiveX控件中如何显示tooltip
- Map---遍历移除
- How To Fix Windows Java Error 1723
- 石英晶体振荡器和陶瓷振荡器区别
- Css3弹性盒模型
- spring-mvc hibernate配置
- RTOS组的嵌入式开发经历
- java-String中的 intern方法
- iOS开发之邮件发送代码