22.11.2006, 18:16
общий
это ответ
Здравствуйте, nazarini!
1) Нужно для статика установить свойства NOTIFY. Затем создать свой класс производный от CStatic и обрабатывать события наведения и ухода мышки.
Ну и в OnPaint рисуешь что надо в зависимости от переменной состояние m_is_hover.
2) Есть несколько вариантов, мой см. в приложении.
Приложение:
1)Свой класс Staticclass CLabel : public CStatic{...afx_msg void OnMouseMove(UINT nFlags, CPoint point);afx_msg void OnMouseLeave(WPARAM, LPARAM);void ActivateHover();bool m_is_hover;...}Реализация:void CLabel::OnMouseMove(UINT nFlags, CPoint pt){ bool is_last = m_is_hover; m_is_hover = true; ActivateHover(); if (!is_last) { Invalidate(); }}void CLabel::OnMouseLeave(WPARAM, LPARAM){ m_is_hover = false; Invalidate();}// без этого событие mouse leave никогда не сработаетvoid CLabel::ActivateHover(){ TRACKMOUSEEVENT csTME; csTME.cbSize = sizeof(csTME); csTME.dwFlags = TME_LEAVE; csTME.hwndTrack = m_hWnd; ::_TrackMouseEvent(&csTME);}2)RECT CDialog::GetRectWindow(UINT id){ CWnd * wnd = GetDlgItem(id); ASSERT(wnd); WINDOWPLACEMENT place; wnd->GetWindowPlacement(&place); return place.rcNormalPosition;}