我想给一个按纽加一个提示信息,就是当鼠标在按纽上停留一会儿后提示它的信息~~
VC里面怎么设置啊?

解决方案 »

  1.   

    project->add to project->component and controls->Visual C++ Components->ToolTip Support
    假设你有了名为My的对话框的工程.首先建立一个Button,方法:在ResourceView中双击Dialog,添加Button采用默认值:IDC_BUTTON1.实现PreTranslateMessage消息的相应函数.
      class CMyDlg : public CDialog
      {
      public:
      CToolTipCtrl m_ToolTips;
      ...............
      };  BOOL CMyDlg::OnInitDialog()
      {
      CDialog::OnInitDialog();  // TODO: Add extra initialization here  CButton *pButton;
      pButton=(CButton *)GetDlgItem(IDC_BUTTON1);
        m_ToolTips.Create(this);
      m_ToolTips.AddTool(pButton,"This is a ToolTips text for this Button");
      return TRUE;  // return TRUE  unless you set the focus to a control
      }  BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) 
      {
      // TODO: Add your specialized code here and/or call the base class
      switch(pMsg->message)
      {
      case WM_LBUTTONDOWN:
      case WM_LBUTTONUP:
      case WM_MOUSEMOVE:
          m_ToolTips.RelayEvent(pMsg);
      }
      return CDialog::PreTranslateMessage(pMsg);
      }
      

  2.   

    1.在对话框类的.h中加入:
    public:
    CToolTipCtrl m_tip;
    CWnd *pBtn;2.在OnInitDialog中加入:
    pBtn=GetDlgItem(IDC_BUTTON1);//获得控件句柄
    ASSERT(pBtn!=NULL);//判断句柄是否有效
    m_tip.Create(pBtn,TTS_ALWAYSTIP);//创建ToolTip
    m_tip.AddTool(pBtn);//将ToolTip与控件建立关联
    m_tip.SetTipTextColor(RGB(0,0,0));//设置字体前景色
    m_tip.SetTipBkColor(RGB(255,255,255));//设置背景色3.重载PreTranslateMessage
    BOOL CtooltipDlg::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: 在此添加专用代码和/或调用基类
    if(m_tip.m_hWnd!=NULL)
    m_tip.RelayEvent(pMsg); return CDialog::PreTranslateMessage(pMsg);
    }4.重载WM_MOUSEMOVE
    void CtooltipDlg::OnMouseMove(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值 m_tip.UpdateTipText("我爱你!!!",pBtn); CDialog::OnMouseMove(nFlags, point);
    }O.K.
      

  3.   

    你定义多个CToolTipCtrl对象并获取控件指针就能加到多个控件上去了呀!不过这个只能一个个加,不具备OO观点。
      

  4.   

    显示工具提示文本
       (1).如果是菜单或工具栏显示,则只要在ID属性的Prompt栏加"\n提示显示".
       (2).在公共控件里显示则需以下步骤:
           <1>.激活工具提示,方法在初始化里(OnInitDialog或OnInitUpdate)调用EnableToolTips();
           <2>.在头文件的类声明中的类消息声明中添加:
               afx_msg BOOL OnNeedToolTipText(UINT id, NMHDR * pTTTStruct, LRESULT * pResult);
           <3>.在源文件中BENGIN_MESSAGE_MAP与END_MESSAGE_MAP之间的类消息表定义中添加:
               ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnNeedToolTipText)
           <4>.在源文件中添加OnNeedToolTipText函数: 
           BOOL CMFCSampleDlg::OnNeedToolTipText(UINT id, NMHDR * pNMHdr, LRESULT * pResult)
      {
          TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *) pNMHdr;       if (pTTT->uFlags & TTF_IDISHWND) {
    UINT idCtrl = ::GetDlgCtrlID(HWND(pTTT->hdr.idFrom));

    pTTT->lpszText = MAKEINTRESOURCE(idCtrl);

    pTTT->hinst    = AfxGetResourceHandle(); return TRUE;
          }         return FALSE;
              }
          <5>.在资源中添加String table资源(要显示的提示信息).一般为IDS_TT_×××_×××.对应控件ID号IDC_×××_×××.
          <6>.在Resource.h文件中修改IDS_TT_×××_×××与IDC_×××_×××同一资源号。
          <7>.如果控件为静态文本(其他待研究)则需使控件有Notify属性。比较麻烦的方法。