コード例 #1
0
LRESULT CElcSkinFrameBase::TrackBorderHitTest(CPoint point)
{
	CRect rcLT(0, 0, RESIZE_BRODER, RESIZE_BRODER);
	CRect rcLB(0, m_rect.bottom-m_nBottom, m_nLeft, m_rect.bottom);
	CRect rcRT(m_rect.right-m_nRight, 0, m_rect.right, m_nRight);
	CRect rcRB(m_rect.right-m_nRight, m_rect.bottom-m_nBottom, m_rect.right, m_rect.bottom);

	CRect rcLeft(rcLT.left, rcLT.bottom, rcLT.right, rcLB.top);
	CRect rcTop(rcLT.right, rcLT.top, rcRT.left, rcLT.top+RESIZE_BRODER);
	CRect rcRight(rcRT.left, rcRT.bottom, rcRT.right, rcRB.top);
	CRect rcBottom(rcLB.right, rcLB.top, rcRB.left, rcRB.bottom);

	if (rcLT.PtInRect(point))
		return HTTOPLEFT;
	else if (rcLB.PtInRect(point))
		return HTBOTTOMLEFT;
	else if (rcRT.PtInRect(point))
		return HTTOPRIGHT;
	else if (rcRB.PtInRect(point))
		return HTBOTTOMRIGHT;
	else if (rcLeft.PtInRect(point))
		return HTLEFT;
	else if (rcTop.PtInRect(point))
		return HTTOP;
	else if (rcRight.PtInRect(point))
		return HTRIGHT;
	else if (rcBottom.PtInRect(point))
		return HTBOTTOM;
	else 
		return HTCAPTION;
}
コード例 #2
0
ファイル: devicedx8.cpp プロジェクト: skopp/rush
void JRenderServer::SetViewport( const Frame& rc )
{
    if (!m_pDevice) return;

    //  clip viewport to the render target size
    Frame vp = rc;
    Frame rcRT( Frame::null );
    if (m_RTID == -1)
    {
        rcRT.w = float( m_PresParam.BackBufferWidth  );
        rcRT.h = float( m_PresParam.BackBufferHeight );
    }
    else
    {
        rcRT.w = float( m_Textures[m_RTID].m_Prop.m_Width  );
        rcRT.h = float( m_Textures[m_RTID].m_Prop.m_Height );
    }

    vp.Clip( rcRT );
    if (vp.w < 1.0f || vp.h < 1.0f)
    {
        return;
    }

    m_Viewport = vp;
    D3DVIEWPORT8 dvp;
    dvp.X       = m_Viewport.x;
    dvp.Y       = m_Viewport.y;
    dvp.Width   = m_Viewport.w;
    dvp.Height  = m_Viewport.h;
    dvp.MinZ    = 0.0f;
    dvp.MaxZ    = 1.0f;
    m_pDevice->SetViewport( (D3DVIEWPORT8*)&dvp );  
} // JRenderServer::SetViewport
コード例 #3
0
LRESULT CElcSkinFrameBase::NcHitTest(CPoint point)
{
	GetOppositePoint(point);

	if (::IsIconic(m_hDerive)) {
		CRect rc;

		for (CFrameButtonArray::iterator it = m_arrButton.begin();
			it != m_arrButton.end();
			it ++)
		{
			if (it->type >= ESNWT_CUSTOM_BASE)
				continue;

			rc = CalcPos(it->pButton);
			if (rc.PtInRect(point)) {
				return it->type;
			}
		}

		if (m_bHasIcon) {
			rc.left = FRAME_ICON_MARGIN + FRAME_ICON_MARGIN;
			rc.right = rc.left + FRAME_ICON_SIZE;
			rc.top = (m_nCaption - FRAME_ICON_SIZE) / 2;
			rc.bottom = rc.top + FRAME_ICON_SIZE;
			if (rc.PtInRect(point))
				return HTSYSMENU;
		}
	}
	else {
		CRect rcClient, rc;

		rcClient.left = m_rect.left + m_nLeft;
		rcClient.right = m_rect.right - m_nRight;
		rcClient.top = m_rect.top + m_nCaption + m_nMenuBar;
		rcClient.bottom = m_rect.bottom - m_nCaption;

		CRect rcLT(0, 0, RESIZE_BRODER, RESIZE_BRODER);
		CRect rcLB(0, m_rect.bottom-m_nBottom, m_nLeft, m_rect.bottom);
		CRect rcRT(m_rect.right-m_nRight, 0, m_rect.right, m_nRight);
		CRect rcRB(m_rect.right-m_nRight, m_rect.bottom-m_nBottom, m_rect.right, m_rect.bottom);

		CRect rcLeft(rcLT.left, rcLT.bottom, rcLT.right, rcLB.top);
		CRect rcTop(rcLT.right, rcLT.top, rcRT.left, rcLT.top+RESIZE_BRODER);
		CRect rcRight(rcRT.left, rcRT.bottom, rcRT.right, rcRB.top);
		CRect rcBottom(rcLB.right, rcLB.top, rcRB.left, rcRB.bottom);

		LONG style = GetWindowLong(m_hDerive, GWL_STYLE);

		if (rcClient.PtInRect(point)) {
			return HTCLIENT;
		}
		else {
			if (style & WS_THICKFRAME) {
				LRESULT lRet = TrackBorderHitTest(point);
				if (lRet != HTCAPTION)
					return lRet;
			}

			for (CFrameButtonArray::iterator it = m_arrButton.begin();
				it != m_arrButton.end();
				it ++)
			{
				rc = CalcPos(it->pButton);
				if (rc.PtInRect(point)) {
					return it->type;
				}
			}

			if (m_nMenuBar > 0) {
				rc = m_rect;
				rc.top = m_nCaption;
				rc.bottom = m_nCaption + m_nMenuBar;
				if (rc.PtInRect(point))
					return HTMENU;
			}

			if (m_bHasIcon) {
				rc.left = FRAME_ICON_MARGIN + FRAME_ICON_MARGIN;
				rc.right = rc.left + FRAME_ICON_SIZE;
				rc.top = (m_nCaption - FRAME_ICON_SIZE) / 2;
				rc.bottom = rc.top + FRAME_ICON_SIZE;
				if (rc.PtInRect(point))
					return HTSYSMENU;
			}
		}
	}

	return HTCAPTION;
}