BOOL CMyToolTipCtrl::AddWindowTool(CWnd *pWnd, LPCTSTR pszText)    // derived from CToolTipCtrl
{ 
    TOOLINFO ti;
    ti.cbSize = sizeof (TOOLINFO);
    ti.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
    ti.hwnd = pWnd->GetParent ()->GetSafeHwnd ();
    ti.uId = (UINT) pWnd->GetSafeHwnd ();
    ti.hinst = AfxGetInstanceHandle ();
    ti.lpszText = (LPTSTR) pszText;    return (BOOL) SendMessage (TTM_ADDTOOL, 0, (LPARAM) &ti);
}//上面有发送消息的,但是没有见到有设置响应消息的。 如果把最后的 SemdMessage去掉,能运行,但是没有文字提示了。 
//有SendMessage时,没有响应消息也可以有文字提示。
//有谁可以介绍一下吗?
//我在C/C++版赚的分都散在这了 哈  谢谢

解决方案 »

  1.   

    TTM_ADDTOOL是系统自定义的消息,在窗口过程中有实现的
      

  2.   

    如果是你自己定义的消息,才需要自己写响应函数,如果你希望改变系统的特性,你可以重载系统的响应函数,自己写实现代码
    比如WM_MOUSEMOVE消息,你发送这个消息默认也有响应,但是你也可以重载OnMouseMove函数来实现你自己的响应方法
      

  3.   

    tooltip有两种工作模式:
    一种是简单类型,只需提供子窗口句柄和提示的文本就能显示,如果一个窗口只需要一个提示(例如一个BUTTON控件),用简单类型就够了。
    另一种是复杂类型,一个窗口的不同部分需要不同的提示信息(例如工具栏的各个按钮),简单模式就不能再使用,必须使用回调方式,当鼠标在窗口上移动时,系统调用回调,回调函数中应该根据光标所在区域的不同而提供不同的提示信息。
      

  4.   

    TTM_ADDTOOL是系统的消息,MFC里面已经实现了响应
      

  5.   

    return (BOOL) SendMessage (TTM_ADDTOOL, 0, (LPARAM) &ti);为什么最后要有SendMessage???
      

  6.   

    发送TTM_ADDTOOL消息是必须的,向tooltip控件添加提示项只能通过这种方法。