TrackControl.h
上传用户:jinq198
上传日期:2014-05-21
资源大小:111k
文件大小:2k
源码类别:

文件操作

开发平台:

Visual C++

  1. #if !defined(AFX_TRACKCONTROL_H__06A38C29_E713_4289_97B5_EC17CA3DAED0__INCLUDED_)
  2. #define AFX_TRACKCONTROL_H__06A38C29_E713_4289_97B5_EC17CA3DAED0__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // TrackControl.h : header file
  7. // Modified by jingzhou xu
  8. template<class BaseClass>
  9. /////////////////////////////////////////////////////////////////////////////
  10. // CTrackControl window
  11. class CTrackControl : public BaseClass
  12. {
  13. // Construction
  14. public:
  15. CTrackControl()
  16. {
  17. m_bTracking=m_bHover=FALSE;
  18. }
  19. virtual ~CTrackControl() {}
  20. BOOLEAN IsHover()
  21. {
  22. return m_bHover;
  23. }
  24. // Implementation
  25. public:
  26. virtual void OnHoverEnter()=0;
  27. virtual void OnHoverLeave()=0;
  28. // Generated message map functions
  29. protected:
  30. virtual LRESULT WindowProc(UINT nMessage, WPARAM wParam, LPARAM lParam)
  31. {
  32. LRESULT nResult=BaseClass::WindowProc(nMessage,wParam,lParam);
  33. switch(nMessage)
  34. {
  35. case WM_MOUSEMOVE:
  36. {
  37. if (!m_bTracking)
  38. {
  39. TRACKMOUSEEVENT Tme;
  40. Tme.cbSize = sizeof(Tme);
  41. Tme.hwndTrack = GetSafeHwnd();
  42. Tme.dwFlags = TME_LEAVE|TME_HOVER;
  43. Tme.dwHoverTime = 1;
  44. if (_TrackMouseEvent(&Tme))
  45. m_bTracking=TRUE;
  46. }
  47. break;
  48. }
  49. case WM_MOUSEHOVER:
  50. m_bHover=TRUE;
  51. OnHoverEnter();
  52. break;
  53. case WM_MOUSELEAVE:
  54. m_bTracking=m_bHover=FALSE;
  55. OnHoverLeave();
  56. break;
  57. }
  58. return nResult;
  59. }
  60. private:
  61. BOOLEAN m_bTracking;
  62. BOOLEAN m_bHover;
  63. };
  64. /////////////////////////////////////////////////////////////////////////////
  65. //{{AFX_INSERT_LOCATION}}
  66. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  67. #endif // !defined(AFX_TRACKCONTROL_H__06A38C29_E713_4289_97B5_EC17CA3DAED0__INCLUDED_)