文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>学习[VC++]  MFC如何向 ActiveX 控件添加工具提示(tooltip)

学习[VC++]  MFC如何向 ActiveX 控件添加工具提示(tooltip)

时间:2010-08-23  来源:hobinly

默认情况下, ActiveX 控件不支持工具提示。 但可使用 MFC ActiveX 控件向导生成带tooltip的ActiveX 控件:

1. 通过使用 MFC ActiveX 控件模板创建新 VisualC++ 项目。 命名新控件 Basic。

2. 打开与项目关联 Stdafx.h 文件并添加以下行。

#include <afxcmn.h>

3. 将下行添加到 CBasicCtrl 位于 BasicCtrl.h —— COleControl 派生类。

        

CToolTipCtrl m_ttip;  

void RelayEvent(UINT message, WPARAM wParam, LPARAM lParam);

 

4. 向 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);

 

 

 

5. 把 WM _ LBUTTONDOWN、 WM _ MOUSEMOVE 和 WM _ LBUTTONUP 消息添加到 ToolTip 控件, 添加处理程序。 

代码
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);
    }
}

 

6. 若要完成用户控件的 ToolTip 功能,  在类视图窗口ClassWizard,  单击以下添加属性。

   ShowToolTip 是否允许显示 ToolTip

    ToolTipText 提示文本

7.当属性改变时,通过OnToolTipTextChanged()和OnShowToolTipChanged()  修改
 

代码
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();
}
}

 

 

 

排行榜 更多 +
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载
货运猎人

货运猎人

飞行射击 下载