我想在CView中,当鼠标在某个位置停留一段时间,则出现工具提示。
关键是我的View中并没有任何控件。

解决方案 »

  1.   

    可以做到,因为view本身也是一个控件,你就和使用其他控件的工具提示一样使用,具体看看MSDN
    CToolTipCtrl
      

  2.   

    我是这样想的,但没能实现,有例子吗?
    我的QQ是56024285,QQ联系好吗?
      

  3.   

    class CEmisDrawView : public CScrollView
    {
    protected: // create from serialization only
    CEmisDrawView();
    DECLARE_DYNCREATE(CEmisDrawView)
    CToolTipCtrl  m_ToolTip;

    };
    int CEmisDrawView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CScrollView::OnCreate(lpCreateStruct) == -1)
    return -1;

    m_ToolTip.Create(this,TTS_ALWAYSTIP);  
    m_ToolTip.AddTool(this,"eMis_Draw"); 
    EnableToolTips(TRUE);
    return 0;
    }
    LRESULT CEmisDrawView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    if(message  ==  WM_MOUSEMOVE)  
    {  
    MSG  msg;  
    msg.hwnd  =  m_hWnd;  
    msg.message  =  message;  
    msg.wParam  =  wParam;  
    msg.lParam  =  lParam; 
    m_ToolTip.RelayEvent(&msg);  
    }  
    return CScrollView::WindowProc(message, wParam, lParam);
    }
    BOOL CEmisDrawView::PreTranslateMessage(MSG* pMsg) 
    {
    m_ToolTip.RelayEvent(pMsg);
    return CScrollView::PreTranslateMessage(pMsg);
    }
      

  4.   

    在你想更改的地方加上:
    m_ToolTip.UpdateTipText(“new string”,this); 
      

  5.   

    我的View从CView派生,只有DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
    我在按右键时调用m_ToolTip.UpdateTipText(“new string”,this); 
    结果还是出不来。其它部分都一样。
      

  6.   

    同意
    将CVIew当作控件即可
    或者在CView放置静态控件,将其扩展到视图一样大小
    给静态控件设置文字提示即可
      

  7.   

    楼上itmaster(传说中的大师) (:每天一个微笑:)
        怎么把CView当作控件?在CView中放置控件不行吧,若显示,则显示的始终只有静态控件的工具提示;若隐藏,跟没有静态控件时同样。
      

  8.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=185765其实楼上的都已经说得很清楚了。上面的那些函数都是要自己去映射消息产生的,对应你自己定义的View在classwizard里消息映射里找到双击,即使是继承自CView的类也是带有CView的消息机制的。
      

  9.   

    很好,已经解决了。感谢每一位帮助我的朋友。
    感谢xuanzg(小钢娃),只是你的工具提示的创建,还是放在OnInitialUpdate中好,否则必须父窗口创建好后才能创建TIP,而这样得修改原有代码,若不知返回值是什么意义的话,是不好修改的。
    感谢kongyunzhongque(云雀),是你的提醒,让我去看把创建代码放在OnInitialUpdate中的效果,结果成功了,多谢!
    也谢谢其他几位提点子的朋友。