MCPcopy Create free account
hub / github.com/CobaltFusion/DebugViewPP / CPropertyCheckButtonItem

Class CPropertyCheckButtonItem

Libraries/PropertyGrid/PropertyItemImpl.h:512–583  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

510// Checkmark button
511
512class CPropertyCheckButtonItem : public CProperty
513{
514protected:
515 bool m_bValue;
516
517public:
518 CPropertyCheckButtonItem(LPCTSTR pstrName, LPARAM lParam) :
519 CProperty(pstrName, lParam),
520 m_bValue(false)
521 {
522 }
523
524 CPropertyCheckButtonItem(LPCTSTR pstrName, bool bValue, LPARAM lParam) :
525 CProperty(pstrName, lParam),
526 m_bValue(bValue)
527 {
528 }
529
530 BYTE GetKind() const
531 {
532 return PROPKIND_CHECK;
533 }
534
535 BOOL GetValue(VARIANT* pVal) const
536 {
537 return SUCCEEDED( CComVariant(m_bValue).Detach(pVal) );
538 }
539
540 BOOL SetValue(const VARIANT& value)
541 {
542 // Set a new value
543 switch( value.vt ) {
544 case VT_BOOL:
545 m_bValue = (value.boolVal != VARIANT_FALSE);
546 return TRUE;
547 default:
548 ATLASSERT(false);
549 return FALSE;
550 }
551 }
552
553 void DrawValue(PROPERTYDRAWINFO& di)
554 {
555 int cxThumb = ::GetSystemMetrics(SM_CXMENUCHECK);
556 int cyThumb = ::GetSystemMetrics(SM_CYMENUCHECK);
557 RECT rcMark = di.rcItem;
558 rcMark.left += 3;
559 rcMark.right = rcMark.left + cxThumb;
560 rcMark.top += 2;
561 if( rcMark.top + cyThumb >= rcMark.bottom ) rcMark.top -= rcMark.top + cyThumb - rcMark.bottom + 1;
562 rcMark.bottom = rcMark.top + cyThumb;
563 UINT uState = DFCS_BUTTONCHECK | DFCS_FLAT;
564 if( m_bValue ) uState |= DFCS_CHECKED;
565 if( (di.state & ODS_DISABLED) != 0 ) uState |= DFCS_INACTIVE;
566 ::DrawFrameControl(di.hDC, &rcMark, DFC_BUTTON, uState);
567 }
568
569 BOOL Activate(UINT action, LPARAM /*lParam*/)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected