LONG CLayoutRuleRelativeControl::Apply(CWindow wndLayout, UINT nDirection, const CRect& rcLayout) const { CWindow wndCtrl = wndLayout.GetDlgItem( m_nCtrlID ); ATLASSERT( ::IsWindow(wndCtrl) ); CRect rcPadding( 0, 0, m_nPadding, m_nPadding ); ::MapDialogRect( wndLayout, rcPadding ); HDWP hDwp = (HDWP) GetProp( wndLayout, MAKEINTATOM(g_atomPropHDWP) ); CRect rcCtrl; GetNewWindowRect( wndCtrl, hDwp, rcCtrl ); switch ( this->m_nDirection ) { case LAYOUT_DIRECTION_LEFT: ATLASSERT( nDirection == LAYOUT_DIRECTION_LEFT || nDirection == LAYOUT_DIRECTION_RIGHT ); return rcCtrl.left - rcPadding.Width(); case LAYOUT_DIRECTION_TOP: ATLASSERT( nDirection == LAYOUT_DIRECTION_TOP || nDirection == LAYOUT_DIRECTION_BOTTOM ); return rcCtrl.top - rcPadding.Height(); case LAYOUT_DIRECTION_RIGHT: ATLASSERT( nDirection == LAYOUT_DIRECTION_LEFT || nDirection == LAYOUT_DIRECTION_RIGHT ); return rcCtrl.right + rcPadding.Width(); case LAYOUT_DIRECTION_BOTTOM: ATLASSERT( nDirection == LAYOUT_DIRECTION_TOP || nDirection == LAYOUT_DIRECTION_BOTTOM ); return rcCtrl.bottom + rcPadding.Height(); default: ATLASSERT(FALSE); return 0; } }
HWND CLayoutControl::CalcRect( CWindow wndLayout, LPCRECT prcLayout, LPRECT prc ) { ATLASSERT( wndLayout.IsWindow() ); ATLASSERT( prcLayout != NULL ); ATLASSERT( prc != NULL ); // Retrieve the control's window handle CWindow wndControl = wndLayout.GetDlgItem( m_nID ); ATLASSERT( wndControl.IsWindow() ); // Get the control's current bounds CRect rcOld; wndControl.GetWindowRect(rcOld); wndLayout.ScreenToClient(rcOld); CopyRect( prc, rcOld ); if ( m_nAnchor & LAYOUT_ANCHOR_LEFT ) { prc->left = prcLayout->left + m_rcMargins.left; if ( !(m_nAnchor & LAYOUT_ANCHOR_RIGHT) ) prc->right = prc->left + rcOld.Width(); } if ( m_nAnchor & LAYOUT_ANCHOR_TOP ) { prc->top = prcLayout->top + m_rcMargins.top; if ( !(m_nAnchor & LAYOUT_ANCHOR_BOTTOM) ) prc->bottom = prc->top + rcOld.Height(); } if ( m_nAnchor & LAYOUT_ANCHOR_RIGHT ) { prc->right = prcLayout->right - m_rcMargins.right; if ( !(m_nAnchor & LAYOUT_ANCHOR_LEFT) ) prc->left = prc->right - rcOld.Width(); } if ( m_nAnchor & LAYOUT_ANCHOR_BOTTOM ) { prc->bottom = prcLayout->bottom - m_rcMargins.bottom; if ( !(m_nAnchor & LAYOUT_ANCHOR_TOP) ) prc->top = prc->bottom - rcOld.Height(); } return (HWND) wndControl; }
void CRegisterTabs::InitRegisterEdit64(CWindow& tab, CEditReg64& edit, WORD ctrlId) { edit.Attach(tab.GetDlgItem(ctrlId)); }
void CRegisterTabs::InitRegisterEdit(CWindow& tab, CEditNumber32& edit, WORD ctrlId) { edit.Attach(tab.GetDlgItem(ctrlId)); edit.SetDisplayType(CEditNumber32::DisplayHex); }