#if !defined(CTRL__SmCheckBox_h__INCLUDED) #define CTRL__SmCheckBox_h__INCLUDED #pragma once #if ENABLE_MSGTABLE_API #define TEST_MOUSEFOCUS 0 // Test MouseFocus by highlighting the CheckBox //------------------------------------------------------------------------------ class SmCheckBox : public CheckBoxGadgetImpl<SmCheckBox, SVisual> { // Construction public: inline SmCheckBox(); inline HRESULT PostBuild(DUser::Gadget::ConstructInfo * pci); // Operations public: virtual void OnDraw(HDC hdc, GMSG_PAINTRENDERI * pmsgR); virtual void OnDraw(Gdiplus::Graphics * pgpgr, GMSG_PAINTRENDERF * pmsgR); // Public Interface public: dapi HRESULT ApiOnEvent(EventMsg * pmsg); dapi HRESULT ApiGetColor(CheckBoxGadget::GetColorMsg * pmsg); dapi HRESULT ApiSetColor(CheckBoxGadget::SetColorMsg * pmsg); dapi HRESULT ApiGetCheck(CheckBoxGadget::GetCheckMsg * pmsg); dapi HRESULT ApiSetCheck(CheckBoxGadget::SetCheckMsg * pmsg); dapi HRESULT ApiGetType(CheckBoxGadget::GetTypeMsg * pmsg); dapi HRESULT ApiSetType(CheckBoxGadget::SetTypeMsg * pmsg); dapi HRESULT ApiGetItem(CheckBoxGadget::GetItemMsg * pmsg); dapi HRESULT ApiSetItem(CheckBoxGadget::SetItemMsg * pmsg); dapi HRESULT ApiSetText(CheckBoxGadget::SetTextMsg * pmsg); // Implementation protected: inline BYTE GetMaxCheck() const; void EmptyCheckBox(); void ComputeLayout(); UINT OnMouseDown(GMSG_MOUSE * pmsg); inline void SetKeyboardFocus(BOOL fFocus); #if TEST_MOUSEFOCUS inline void SetMouseFocus(BOOL fFocus); #endif // TEST_MOUSEFOCUS // Data protected: static HFONT s_hfntCheck; // Standard font used for check static HFONT s_hfntText; // Standard font used for text Visual * m_pgvItem; // Nested item RECT m_rcCheckPxl; // Check position (client) RECT m_rcItemPxl; // Nested item position (client) COLORREF m_crCheckBox; // Color of check BYTE m_bChecked:8; // State of checkbox BYTE m_bType:8; // Type of checkbox BOOL m_fKeyboardFocus:1; // Checkbox has keyboard focus BOOL m_fText:1; // Item is a TextGadget }; #endif // ENABLE_MSGTABLE_API #include "SmCheckBox.inl" #endif // CTRL__SmCheckBox_h__INCLUDED