📄 hcontrol.h
字号:
)
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 + -