各位,我用CEdit显示文本,希望做到这样的效果:鼠标滑过加下划线,鼠标离开后把下划线取消。
但是目前的问题是,我加入下划线后,下划线就取消不了了。
代码如下,请各位高手明示,谢谢啦!!!!!!!!void CHyperLinkEdit::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// CEdit::OnMouseMove(nFlags, point);
if (m_bOverControl) // Cursor is currently over control
{
CRect rect;
GetClientRect(rect);
if (!rect.PtInRect(point))
{
m_bOverControl = FALSE;
m_bUnderline=FALSE;
ReleaseCapture();
RedrawWindow();
SetUnderline(m_bUnderline);
return;
}
}
else // Cursor has just moved over control
{
m_bUnderline=TRUE;
m_bOverControl = TRUE;
RedrawWindow();
SetUnderline(m_bUnderline);
SetCapture();
}
}
void CHyperLinkEdit::SetUnderline(BOOL bUnderline)
{
m_bUnderline = bUnderline;
if (::IsWindow(GetSafeHwnd()))
{
LOGFONT lf;
GetFont()->GetLogFont(&lf);
lf.lfUnderline = m_bUnderline; m_Font.DeleteObject();
BOOL B=m_Font.CreateFontIndirect(&lf);
SetFont(&m_Font,FALSE);
Invalidate();
}
}
但是目前的问题是,我加入下划线后,下划线就取消不了了。
代码如下,请各位高手明示,谢谢啦!!!!!!!!void CHyperLinkEdit::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// CEdit::OnMouseMove(nFlags, point);
if (m_bOverControl) // Cursor is currently over control
{
CRect rect;
GetClientRect(rect);
if (!rect.PtInRect(point))
{
m_bOverControl = FALSE;
m_bUnderline=FALSE;
ReleaseCapture();
RedrawWindow();
SetUnderline(m_bUnderline);
return;
}
}
else // Cursor has just moved over control
{
m_bUnderline=TRUE;
m_bOverControl = TRUE;
RedrawWindow();
SetUnderline(m_bUnderline);
SetCapture();
}
}
void CHyperLinkEdit::SetUnderline(BOOL bUnderline)
{
m_bUnderline = bUnderline;
if (::IsWindow(GetSafeHwnd()))
{
LOGFONT lf;
GetFont()->GetLogFont(&lf);
lf.lfUnderline = m_bUnderline; m_Font.DeleteObject();
BOOL B=m_Font.CreateFontIndirect(&lf);
SetFont(&m_Font,FALSE);
Invalidate();
}
}
WM_MOUSELEAVE,是响应这个消息吗,我试试先
处理文本框的这个消息
在里面把下划线去掉
处理文本框的这个消息
在里面把下划线去掉