⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hcontrol.h

📁 控件形式的DLL
💻 H
📖 第 1 页 / 共 2 页
字号:
)


BEGIN_PROP_MAP(CHControl)
	PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
	PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
	PROP_ENTRY("Appearance", DISPID_APPEARANCE, CLSID_NULL)
	PROP_ENTRY("AutoSize", DISPID_AUTOSIZE, CLSID_NULL)
	PROP_ENTRY("BackColor", DISPID_BACKCOLOR, CLSID_StockColorPage)
	PROP_ENTRY("BackStyle", DISPID_BACKSTYLE, CLSID_NULL)
	PROP_ENTRY("BorderColor", DISPID_BORDERCOLOR, CLSID_StockColorPage)
	PROP_ENTRY("BorderVisible", DISPID_BORDERVISIBLE, CLSID_NULL)
	PROP_ENTRY("Enabled", DISPID_ENABLED, CLSID_NULL)
	PROP_ENTRY("FillColor", DISPID_FILLCOLOR, CLSID_StockColorPage)
	PROP_ENTRY("FillStyle", DISPID_FILLSTYLE, CLSID_NULL)
	PROP_ENTRY("Font", DISPID_FONT, CLSID_StockFontPage)
	PROP_ENTRY("ForeColor", DISPID_FORECOLOR, CLSID_StockColorPage)
	PROP_ENTRY("TabStop", DISPID_TABSTOP, CLSID_NULL)
	PROP_ENTRY("Text", DISPID_TEXT, CLSID_NULL)
	PROP_ENTRY("V1Value", 2, CLSID_CSettingPropPage)
	PROP_ENTRY("A1Value", 3, CLSID_CSettingPropPage)
	PROP_ENTRY("V2Value", 4, CLSID_CSettingPropPage)
	PROP_ENTRY("A2Value", 5, CLSID_CSettingPropPage)
	PROP_ENTRY("DTJValue", 6, CLSID_CSettingPropPage)
	PROP_ENTRY("HHLValue", 7, CLSID_CSettingPropPage)
	PROP_ENTRY("YWValue", 8, CLSID_CSettingPropPage)
	PROP_ENTRY("GZFS", 9, CLSID_CSettingPropPage)
	PROP_ENTRY("BaoJing", 10, CLSID_CSettingPropPage)
	PROP_ENTRY("AutoState", 11, CLSID_CSettingPropPage)
	PROP_ENTRY("BtState", 12, CLSID_CSettingPropPage)
	PROP_ENTRY("FontSize", 13, CLSID_CSettingPropPage)
END_PROP_MAP()


BEGIN_MSG_MAP(CHControl)
//	MESSAGE_HANDLER(WM_CREATE, OnCreate)
//	MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
//	MESSAGE_HANDLER(WM_LBUTTONDBLCLK, OnLButtonDblClk)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
//MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
//MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
//MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
//MESSAGE_HANDLER(WM_SHOWWINDOW, OnShowWindow)
//MESSAGE_HANDLER(WM_TIMER, OnTimer)
CHAIN_MSG_MAP(CComControl<CHControl>)
	DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
// 处理程序原型: 
//  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
//  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
//  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

	__event __interface _IHControlEvents;
	//fire events
	HRESULT Fire_VAPress(short n)
	{
		__raise VAPress(n );
		return S_OK;
	}


    HRESULT Fire_SwitchPress(SHORT n)
	{
		__raise SwitchPress(n);
		return S_OK;
	}

   HRESULT Fire_DetailPress(BSTR strName)
   {
		__raise DetailPress(strName);
		return S_OK;
	}

    HRESULT Fire_KeepPress(SHORT n)
	{
		__raise KeepPress(n);
		return S_OK;
	}

   HRESULT Fire_DownPress(SHORT n)
   {
		__raise DownPress(n);
		return S_OK;
	}

    HRESULT Fire_CancelPress(SHORT n)
	{
		__raise CancelPress(n);
		return S_OK;
	}
/**/


// IViewObjectEx
	DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)

// IHControl
public:
	HRESULT OnDraw(ATL_DRAWINFO& di)
	{
		RECT& controlBounds = *(RECT*)di.prcBounds;
		RECT bitmapBounds = {0,0,controlBounds.right-controlBounds.left,controlBounds.bottom-controlBounds.top};

		HDC bitmapContext = CreateCompatibleDC(di.hdcDraw);
		HBITMAP backBuffer = CreateCompatibleBitmap(di.hdcDraw,bitmapBounds.right,bitmapBounds.bottom);
		HBITMAP saved = (HBITMAP)SelectObject(bitmapContext,backBuffer);
		DrawLogic(bitmapContext,bitmapBounds);
		BOOL result = BitBlt(di.hdcDraw,
			controlBounds.left,controlBounds.top,
			controlBounds.right - controlBounds.left,
			controlBounds.bottom- controlBounds.top,
			bitmapContext,0,0,SRCCOPY);
		SelectObject(bitmapContext,saved);
		DeleteObject(backBuffer);
		DeleteObject(bitmapContext);
 		return S_OK;
	}

	void OnAutoSizeChanged()
	{
		ATLTRACE(_T("OnAutoSizeChanged\n"));
	}
	SHORT m_nAppearance;
	void OnAppearanceChanged()
	{
		ATLTRACE(_T("OnAppearanceChanged\n"));
	}
	COLORREF m_clrBackColor;
	void OnBackColorChanged()
	{
		ATLTRACE(_T("OnBackColorChanged\n"));
	}
	LONG m_nBackStyle;
	void OnBackStyleChanged()
	{
		ATLTRACE(_T("OnBackStyleChanged\n"));
	}
	COLORREF m_clrBorderColor;
	void OnBorderColorChanged()
	{
		ATLTRACE(_T("OnBorderColorChanged\n"));
	}
	BOOL m_bBorderVisible;
	void OnBorderVisibleChanged()
	{
		ATLTRACE(_T("OnBorderVisibleChanged\n"));
	}
	BOOL m_bEnabled;
	void OnEnabledChanged()
	{
		ATLTRACE(_T("OnEnabledChanged\n"));
	}
	COLORREF m_clrFillColor;
	void OnFillColorChanged()
	{
		ATLTRACE(_T("OnFillColorChanged\n"));
	}
	LONG m_nFillStyle;
	void OnFillStyleChanged()
	{
		ATLTRACE(_T("OnFillStyleChanged\n"));
	}
	CComPtr<IFontDisp> m_pFont;
	void OnFontChanged()
	{
		ATLTRACE(_T("OnFontChanged\n"));
	}
	COLORREF m_clrForeColor;
	void OnForeColorChanged()
	{
		ATLTRACE(_T("OnForeColorChanged\n"));
	}
	BOOL m_bTabStop;
	void OnTabStopChanged()
	{
		ATLTRACE(_T("OnTabStopChanged\n"));
	}
	CComBSTR m_bstrText;
	void OnTextChanged()
	{
		ATLTRACE(_T("OnTextChanged\n"));
	}
	STDMETHOD(_InternalQueryService)(REFGUID guidService, REFIID riid, void** ppvObject)
	{
		return E_NOTIMPL;
	}

	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		return S_OK;
	}
	
	void FinalRelease() 
	{
	}
	void ShowVoltageLevel(ATL_DRAWINFO& di,CRect rect);
	void ShowCurrentLevel(ATL_DRAWINFO& di,CRect rect);
	STDMETHOD(get_V1Value)(SHORT* pVal);
	STDMETHOD(put_V1Value)(SHORT newVal);
	STDMETHOD(get_A1Value)(SHORT* pVal);
	STDMETHOD(put_A1Value)(SHORT newVal);
	STDMETHOD(get_V2Value)(SHORT* pVal);
	STDMETHOD(put_V2Value)(SHORT newVal);
	STDMETHOD(get_A2Value)(SHORT* pVal);
	STDMETHOD(put_A2Value)(SHORT newVal);
	STDMETHOD(get_DTJValue)(SHORT* pVal);
	STDMETHOD(put_DTJValue)(SHORT newVal);
	STDMETHOD(get_HHLValue)(SHORT* pVal);
	STDMETHOD(put_HHLValue)(SHORT newVal);
	STDMETHOD(get_YWValue)(SHORT* pVal);
	STDMETHOD(put_YWValue)(SHORT newVal);
	STDMETHOD(get_GZFS)(BSTR* pVal);
	STDMETHOD(put_GZFS)(BSTR newVal);
	STDMETHOD(get_BaoJing)(BSTR* pVal);
	STDMETHOD(put_BaoJing)(BSTR newVal);
	STDMETHOD(get_UnitName)(BSTR* pVal);
	STDMETHOD(put_UnitName)(BSTR newVal);
	void FD_SetSmallGridLength(unsigned int length);
	void FD_SetSmallGridNum(unsigned int number);
	void FD_SetLevelRatio(double high_ratio, double middle_ratio);
	void FD_SetGridOffset(int x_offset);
	void FD_SetGridColor(COLORREF color);
	void FD_SetTextOffset(int x, int y);
	void FD_SetTextColor(COLORREF color);
	void FD_SetBigGridLength(unsigned int length);
	void FD_SetBigGridNum(unsigned int number);
	void FD_SetLowLevelColor(COLORREF color);
	void FD_SetMiddleLevelColor(COLORREF color);
	void FD_SetHighLevelColor(COLORREF color);
	void FD_SetFrameBackColor(COLORREF color);
	void FD_SetFrameFrontColor(COLORREF color);
	void FD_SetFrameSize(unsigned int radius,unsigned int length);
	void FD_SetPipeSize(unsigned int radius, unsigned int length);
	void FD_SetOrigin(int x, int y);
	void FD_SetSize(unsigned int width, unsigned int height);
	void FD_SetMaxFluxV(double flux);
	void FD_SetMaxFluxA(double flux);
	void FD_SetCurrentFluxV(double flux);
	void FD_SetCurrentFluxA(double flux);
	void FD_SetStatus(unsigned int status);
	void FD_MoveWindow(int x, int y);
	COLORREF GetNextColor(COLORREF current_color, int delta);
	COLORREF GetNextColor(COLORREF current_color, double ratio);
	void FD_SetFontSize(unsigned int size);
	void ShowText(ATL_DRAWINFO& di, CRect rect);
	LRESULT OnLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);

	STDMETHOD(SendOver)(void);
	STDMETHOD(get_VAState)(SHORT* pVal);
	STDMETHOD(put_VAState)(SHORT newVal);
	STDMETHOD(get_SwitchState)(SHORT* pVal);
	STDMETHOD(put_SwitchState)(SHORT newVal);
	STDMETHOD(get_KeepState)(SHORT* pVal);
	STDMETHOD(put_KeepState)(SHORT newVal);
	STDMETHOD(get_DownState)(SHORT* pVal);
	STDMETHOD(put_DownState)(SHORT newVal);
	STDMETHOD(get_CancelState)(SHORT* pVal);
	STDMETHOD(put_CancelState)(SHORT newVal);
	STDMETHOD(get_RemoteState)(SHORT* pVal);
	STDMETHOD(put_RemoteState)(SHORT newVal);
	STDMETHOD(get_WrongState)(SHORT* pVal);
	STDMETHOD(put_WrongState)(SHORT newVal);
	STDMETHOD(get_DetailState)(SHORT* pVal);
	STDMETHOD(put_DetailState)(SHORT newVal);
	STDMETHOD(get_OperateLevel)(SHORT* pVal);
	STDMETHOD(put_OperateLevel)(SHORT newVal);
	STDMETHOD(get_DisplayNow)(SHORT* pVal);
	STDMETHOD(put_DisplayNow)(SHORT newVal);
	STDMETHOD(get_AutoState)(SHORT* pVal);
	STDMETHOD(put_AutoState)(SHORT newVal);
	STDMETHOD(get_BtState)(SHORT* pVal);
	STDMETHOD(put_BtState)(SHORT newVal);
	STDMETHOD(get_DrawBkColor)(OLE_COLOR* pVal);
	STDMETHOD(put_DrawBkColor)(OLE_COLOR newVal);
	STDMETHOD(get_PressColor)(OLE_COLOR* pVal);
	STDMETHOD(put_PressColor)(OLE_COLOR newVal);
	void DrawLogic(HDC device, RECT bounds);
	STDMETHOD(get_FontSize)(SHORT* pVal);
	STDMETHOD(put_FontSize)(SHORT newVal);
};


/*
//  得到当前的各种颜色.其中TranslateColor是为了把OLE_COLOR转换成COLORREF.
  COLORREF textbkcolor = ::GetSysColor(COLOR_BTNFACE);
  COLORREF textforecolor = this->TranslateColor(this->GetForeColor());

  COLORREF edgebkcolor = ::GetSysColor(COLOR_3DFACE);
  COLORREF edgeforecolor = ::GetSysColor(COLOR_3DFACE);

  COLORREF oldbkcolor = pdc->SetBkColor(textbkcolor);
  COLORREF oldforecolor = pdc->SetTextColor(textforecolor);

  if(m_brush.m_hObject = NULL)
  m_brush.CreateSolidBrush(textbkcolor);
  CBrush* pOldbrush = pdc->SelectObject(&m_brush);

  pdc->Rectangle(&rcBounds);

  CSize osize = pdc->GetTextExtent(m_cstrCaption);
  m_size = osize;

  pdc->ExtTextOut((rcBounds.right-osize.cx)/2,(rcBounds.bottom-osize.cy)/2,ETO_CLIPPED|ETO_OPAQUE,rcBounds,
              m_cstrCaption,m_cstrCaption.GetLength(),NULL);    
  
  UINT borderstyle = EDGE_RAISED;
  UINT borderflags = BF_RECT;

//  画边框
  pdc->SetBkColor(edgebkcolor);
  pdc->SetTextColor(edgeforecolor);

  pdc->DrawEdge((LPRECT)(LPCRECT)rcBounds,borderstyle,borderflags);

//  恢复设置
  pdc->SetBkColor(oldbkcolor);
  pdc->SetTextColor(oldforecolor);

  pdc->SelectObject(pOldfont);
  pdc->SelectObject(pOldbrush);




LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  {
   HMENU hmenu = LoadMenu ( _Module.GetResourceInstance(),
   MAKEINTRESOURCE(IDR_MENU1) );

   SetMenu ( hmenu );
   return 0;
  }

*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -