我想实现鼠标移到ListCtrl报表中某一行,弹出tips窗口,显示信息,我在网上找的代码,实现后,发现个问题,就是AddTool的第三个参数是相对父窗口的坐标,而我的列表框内容比较多,所以当列表框滚到下一屏时,当前第一行(实际是列表框的第21行)的tips信息还是第一行的,这怎么解决啊?新手求救!
    CRect rect;  
    m_List.GetItemRect(0, &rect, LVIR_BOUNDS);  
    m_Mytip.AddTool(&m_List, des1);   
    m_List.GetItemRect(1, &rect, LVIR_BOUNDS);  
    m_Mytip.AddTool(&m_List, des2, &rect, 2); 
    m_List.GetItemRect(2, &rect, LVIR_BOUNDS);  
    m_Mytip.AddTool(&m_List, des3, &rect, 3); 
    ……
CToolTipCtrl,MFC

解决方案 »

  1.   

    你应该可以取得当前行的真实行数,这样就看你能不能改变显示信息了。也就是根据真实行来改变显示信息,虽然第三个参数还是LIST里的相对行
      

  2.   

    AddTool 要:
    lpszText
    Pointer to the text for the tool. If this parameter contains the value LPSTR_TEXTCALLBACK, TTN_NEEDTEXT notification messages go to the parent of the window that pWnd points to.
    使用:
    LPSTR_TEXTCALLBACK
    然后 在 TTN_NEEDTEXT 中 改 tip
      

  3.   


    您好,能再说具体下吗?
    我不知道如何在TTN_NEEDTEXT 中改tip,怎么能根据CListCtrl的不同行显示不同内容呢?
      

  4.   

    http://msdn.microsoft.com/en-US/library/hyx3x0yx(v=vs.80).aspx看看这里面!