hur.cn - 华软网

 热门搜索

ToolTip怎么在禁用的按钮上显示

  作者:未知    来源:网络    更新时间:2011/9/27
rt,在父窗口的代码中处理:
C++">
CToolTipCtrl                                     m_Tip;

EnableToolTips(TRUE);

m_Tip.Create(this);
m_Tip.AddTool(this, TEXT(""));

在mousemove消息中处理:
if (m_Tip.GetSafeHwnd())
{
CPoint pt;
GetCursorPos(&pt);
TRACE("pt.x:%d, pt.y:%d\n", pt.x, pt.y);

CRect rcTip;
m_Btn.GetWindowRect(rcTip);
TRACE("rc.l:%d, rc.t:%d, rc.r:%d, rc.b:%d\n", 
rcTip.left, rcTip.top, rcTip.right, rcTip.bottom);
if (rcTip.PtInRect(pt))
{
m_Tip.UpdateTipText(TEXT("552"), this);
m_Tip.Activate(TRUE);
}

}



m_Btn是被EnableWindow(false)的,这样弹不出tooltip, 求原因.
---华软 网友回答---

直接m_Tip.AddTool(&m_Btn, TEXT("2522"); 也不行,谁有方法解决下禁用控件显示TOOLTIP
---华软网友回复---
没有好的办法,只有重新写!
---华软网友回复---

---华软网友回复---
在Dlg类中增加PreTranslateMessage,先使按钮使能,然后再过滤掉按钮的单击消息
BOOL CDisButtonToolTipDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
    m_btn1.EnableWindow(TRUE);
    if(pMsg->message == WM_LBUTTONDOWN)
    {
         if(pMsg->hwnd == m_btn1.GetSafeHwnd())
               return TRUE;        
    }
   
m_toolTip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。