Exemplo n.º 1
0
CRect CRegisterTabs::GetPageRect()
{
    CWindow parentWin = GetParent();
    CRect pageRect;
    GetWindowRect(&pageRect);
    parentWin.ScreenToClient(&pageRect);
    AdjustRect(FALSE, &pageRect);
    return pageRect;
}
Exemplo n.º 2
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 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);
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 6
0
	void set(CWindow& wnd, CWindow& owner)
	{
		wnd.GetWindowRect(this);
		owner.ScreenToClient(this);
	}