谢谢

解决方案 »

  1.   

    http://www.vckbase.com/bbs/prime/viewprime.asp?id=30
      

  2.   

    1、选择“Project”菜单,然后“Set Active Project” 。
    2、选择“Project”菜单 -->“Add to Project” -->“Components and Controls” -->“VC++ Components” --> “ToolTip Support” 
    3、选择“Insert” 
    4、在对话框资源中加入一个按钮,ID为IDC_ToolTip
    5、在 CDialog::OnInitDialog() 中找到下面的注释行:   // TODO: Use one of the following forms to add controls:
       // m_tooltip.AddTool(GetDlgItem(IDC_), );
       // m_tooltip.AddTool(GetDlgItem(IDC_), "");
    然后在注释行后加入一行代码:
       m_tooltip.AddTool(GetDlgItem(IDC_ToolTip), "显示 ToolTip");
    经过上面的步骤之后:头文件(*.h)中会自动加入下面的代码:
       public:
          virtual BOOL PreTranslateMessage(MSG* pMsg);实现文件(*.cpp)会加入方法实现:
          PreTranslateMessage(MSG* pMsg);编译程序执行吧,将鼠标指针移到ToolTip按钮上就会显示出一个ToolTip信息。 以下提供一篇工具栏中的ToolTip实现,可以转换到Button上去。1、选择按钮的风格中加入TOOLTIPS的风格。
    2、然后增加一个消息函数定义:
       afx_msg BOOL OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *pResult);
    3、增加消息映射:
       ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipText);
    4、消息函数实现:
       ………………………………
       TOOLTIPTEXTA *pTTTA = (TOOLTIPTEXTA *)pNMHDR;
       TOOLTIPTEXTW *pTTTW = (TOOLTIPTEXTW *)pNMHDR;
       
       CString strTipText;
       UINT uID = pNMHDR->idForm;
       
       if(pNMHDR->code == TTN_NEEDTEXTA && (pTTTA ->uFlags & TTF_IDISHWND_\) || pNMHDR->code ==  TTN_NEADTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
             uID = ::GetDlgCtrlID((HWND)uID);  //idForm位工具栏的HWND
       
        if(uID != 0)   //不为分割符
        {
           strTipText.LoadString(uID);
           strTipText = strTip.Mid(strTipText.Find('\n', 0) + 1);#ifndef _UNICODE
         if(pNMHDR->code == TTN_NEEDTEXTA)
             lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
         else
             _mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
    #else
         if(pNMHDR->code == TTN_NEEDTEXTW)
             _wcstombsz(pTTTA->szText, strTipText, sizeof(pTTTW->szText));
          else
             lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
    #endif     *pResult = 0;
         ::SetWindowPos(pNMHDR->hwndForm, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_NOOWNERZORDER);
         
         return TRUE;
         }
       
         return TRUE;
    }