wyMeterCtl.h
上传用户:seaboy_04
上传日期:2013-02-24
资源大小:284k
文件大小:3k
源码类别:

其他行业

开发平台:

Visual C++

  1. #if !defined(AFX_WYMETERCTL_H__15491A73_5B63_11D5_ADD3_001088AB5D33__INCLUDED_)
  2. #define AFX_WYMETERCTL_H__15491A73_5B63_11D5_ADD3_001088AB5D33__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // wyMeterCtl.h : Declaration of the CwyMeterCtrl ActiveX Control class.
  7. /////////////////////////////////////////////////////////////////////////////
  8. // CwyMeterCtrl : See wyMeterCtl.cpp for implementation.
  9. #ifndef ROUND
  10. #define ROUND(x) (int)((x) + 0.5 - (double)((x) < 0))
  11. #endif
  12. #define BOUNDARY_POINTS 48
  13. class CwyMeterCtrl : public COleControl
  14. {
  15. DECLARE_DYNCREATE(CwyMeterCtrl)
  16. // Constructor
  17. public:
  18. CwyMeterCtrl();
  19. // Overrides
  20. // ClassWizard generated virtual function overrides
  21. //{{AFX_VIRTUAL(CwyMeterCtrl)
  22. public:
  23. virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
  24. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  25. virtual void DoPropExchange(CPropExchange* pPX);
  26. virtual void OnResetState();
  27. virtual void Serialize(CArchive& ar);
  28. //}}AFX_VIRTUAL
  29. // Implementation
  30. protected:
  31. void UpdateNeedle(double dValue) ;
  32. void DrawNeedle(CDC *pDC) ;
  33. void DrawValue(CDC *pDC) ;
  34. void DrawMeterBackground(CDC *pDC, const CRect &rect) ;
  35. int m_nValueFontHeight ;
  36. int m_nValueFontWidth ;
  37. COLORREF m_colorHighlight ;
  38. COLORREF m_colorShadow ;
  39. CRect m_rectValue ;
  40. CPoint m_pointBoundary[BOUNDARY_POINTS] ;
  41. CRgn m_rgnBoundary ;
  42. int m_nTopRadius ;
  43. double m_dLeftAngleRad ;
  44. double m_dRightAngleRad ;
  45. int m_nBottomCX ;
  46. int m_nBottomCY ;
  47. int m_nBottomRadius ;
  48. COLORREF m_colorWindow ;
  49. int m_nValueBaseline ;
  50. int m_nValueCenter ;
  51. COLORREF m_colorButton ;
  52. COLORREF m_colorText ;
  53. CFont m_fontValue ;
  54. CBitmap *m_pBitmapOldBackground ;
  55. CBitmap m_bitmapBackground;
  56. CDC m_dcBackground;
  57. CRect m_rectCtrl;
  58. ~CwyMeterCtrl();
  59. DECLARE_OLECREATE_EX(CwyMeterCtrl)    // Class factory and guid
  60. DECLARE_OLETYPELIB(CwyMeterCtrl)      // GetTypeInfo
  61. DECLARE_PROPPAGEIDS(CwyMeterCtrl)     // Property page IDs
  62. DECLARE_OLECTLTYPE(CwyMeterCtrl) // Type name and misc status
  63. // Subclassed control support
  64. BOOL IsSubclassedControl();
  65. LRESULT OnOcmCommand(WPARAM wParam, LPARAM lParam);
  66. // Message maps
  67. //{{AFX_MSG(CwyMeterCtrl)
  68. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  69. afx_msg void OnDestroy();
  70. afx_msg void OnTimer(UINT nIDEvent);
  71. //}}AFX_MSG
  72. DECLARE_MESSAGE_MAP()
  73. // Dispatch maps
  74. //{{AFX_DISPATCH(CwyMeterCtrl)
  75. double m_dMaxValue; //最大量程
  76. afx_msg void OnDMaxValueChanged();
  77. double m_dMinValue; //最小量程
  78. afx_msg void OnDMinValueChanged();
  79. double m_dCurrentValue; //当前值
  80. afx_msg void OnDCurrentValueChanged();
  81. short m_nScaleDecimals; //标尺精度
  82. afx_msg void OnNScaleDecimalsChanged();
  83. short m_nValueDecimals; //数值精度
  84. afx_msg void OnNValueDecimalsChanged();
  85. OLE_COLOR m_colorNeedle; //指针颜色
  86. afx_msg void OnColorNeedleChanged();
  87. CString m_strUnits; //计量单位
  88. afx_msg void OnStrUnitsChanged();
  89. afx_msg void SetCurrentValue(double val);
  90. //}}AFX_DISPATCH
  91. DECLARE_DISPATCH_MAP()
  92. afx_msg void AboutBox();
  93. // Event maps
  94. //{{AFX_EVENT(CwyMeterCtrl)
  95. //}}AFX_EVENT
  96. DECLARE_EVENT_MAP()
  97. // Dispatch and event IDs
  98. public:
  99. enum {
  100. //{{AFX_DISP_ID(CwyMeterCtrl)
  101. dispidSetCurrentValue = 8L,
  102. //}}AFX_DISP_ID
  103. };
  104. };
  105. //{{AFX_INSERT_LOCATION}}
  106. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  107. #endif // !defined(AFX_WYMETERCTL_H__15491A73_5B63_11D5_ADD3_001088AB5D33__INCLUDED)