CRect CRegisterTabs::GetPageRect() { CWindow parentWin = GetParent(); CRect pageRect; GetWindowRect(&pageRect); parentWin.ScreenToClient(&pageRect); AdjustRect(FALSE, &pageRect); return pageRect; }
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 CButtonST::PaintBk(CDCHandle pDC) { CWindow parent = GetParent(); CClientDC clDC(parent); CRect rect; CRect rect1; GetClientRect(rect); GetWindowRect(rect1); parent.ScreenToClient(rect1); if (m_dcBk == 0) { m_dcBk.CreateCompatibleDC(clDC); m_bmpBk.CreateCompatibleBitmap(clDC, rect.Width(), rect.Height()); m_pbmpOldBk = m_dcBk.SelectBitmap(m_bmpBk); m_dcBk.BitBlt(0, 0, rect.Width(), rect.Height(), clDC, rect1.left, rect1.top, SRCCOPY); } pDC.BitBlt(0, 0, rect.Width(), rect.Height(), m_dcBk, 0, 0, SRCCOPY); }
void GetNewWindowRect(HWND hWnd, HDWP hDwp, LPRECT pRect) { ATLASSERT( ::IsWindow(hWnd) ); ATLASSERT( pRect != NULL ); if ( GetProp( hWnd, MAKEINTATOM(g_atomPropHDWP) ) == hDwp ) { HANDLE hptTopLeft = GetProp( hWnd, MAKEINTATOM(g_atomPropTopLeft) ), hptBottomRight = GetProp( hWnd, MAKEINTATOM(g_atomPropBottomRight) ); SetRect( pRect, LOWORD(hptTopLeft), HIWORD(hptTopLeft), LOWORD(hptBottomRight), HIWORD(hptBottomRight) ); } else { ::GetWindowRect(hWnd, pRect); CWindow wndParent = ::GetParent(hWnd); ATLASSERT( ::IsWindow(wndParent) ); wndParent.ScreenToClient(pRect); } }
BOOL CSkinScrollWnd::Initialize ( CONST HWND hWnd, CONST SCROLLBAR_SKIN_INFO& ResSet ) { if ( FALSE == ::IsWindow ( hWnd ) ) { return FALSE; } if ( FALSE == SetSkinInfo ( ResSet ) ) { return FALSE; } m_imgCorner.Load(ResSet.pImageCorner, ImageFormatPNG); m_brBackground.Attach(ResSet.hBrBackground); CWindow ParentWnd = ::GetParent ( hWnd ); CRect rcFrm, rcWnd; ::GetWindowRect ( hWnd, &rcFrm ); ParentWnd.ScreenToClient ( &rcFrm ); rcWnd = rcFrm; rcWnd.OffsetRect ( -rcWnd.left, -rcWnd.top ); DWORD dwStyle = ::GetWindowLong ( hWnd, GWL_STYLE ); DWORD dwFrmStyle = WS_CHILD | SS_NOTIFY ; DWORD dwFrmStyleEx = 0; if ( dwStyle & WS_VISIBLE ) { dwFrmStyle |= WS_VISIBLE; } if ( dwStyle & WS_BORDER ) { dwStyle &= ~WS_BORDER; ::SetWindowLong ( hWnd, GWL_STYLE, dwStyle ); int nBorder = ::GetSystemMetrics ( SM_CXBORDER ); rcWnd.right -= nBorder * 2; rcWnd.bottom -= nBorder * 2; dwFrmStyle |= WS_BORDER; } DWORD dwExStyle = ::GetWindowLong ( hWnd, GWL_EXSTYLE ); if ( dwExStyle & WS_EX_CLIENTEDGE ) { dwExStyle &= ~WS_EX_CLIENTEDGE; ::SetWindowLong ( hWnd, GWL_EXSTYLE, dwExStyle ); int nCXEDGE = ::GetSystemMetrics ( SM_CXEDGE ); rcWnd.right -= nCXEDGE * 2; rcWnd.bottom -= nCXEDGE * 2; dwFrmStyleEx |= WS_EX_CLIENTEDGE; } this->Create ( ParentWnd.m_hWnd, rcFrm, _T ( "" ), dwFrmStyle, dwFrmStyleEx ); m_MidWnd.Create ( m_hWnd, NULL, _T ( "" ), WS_CHILD | WS_VISIBLE /*| WS_CLIPCHILDREN | WS_CLIPSIBLINGS */ ); m_sbHorizontal.Create( m_hWnd, NULL, NULL, WS_CHILD | SBS_HORZ ); m_sbVertical.Create ( m_hWnd, NULL, NULL, WS_CHILD | SBS_VERT ); ::SetParent ( hWnd, m_MidWnd.m_hWnd ); ::SetWindowLong ( hWnd, GWL_USERDATA, ( LONG ) this ); m_fnOldWinProc = ( WNDPROC ) ::SetWindowLong ( hWnd, GWL_WNDPROC, ( LONG ) WindowProc ); m_hTargetWnd = hWnd; ::SetWindowPos ( hWnd, NULL, rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, SWP_NOZORDER | SWP_FRAMECHANGED | SWP_NOACTIVATE ); ::SetTimer ( m_hWnd, TIMER_UPDATE, 100, NULL ); return TRUE; }
void set(CWindow& wnd, CWindow& owner) { wnd.GetWindowRect(this); owner.ScreenToClient(this); }