コード例 #1
0
ファイル: YGroup.cpp プロジェクト: Yoonsungbin/MFC_PaintEdit
YGroup::YGroup(CList<YObject*, YObject*>& list){

	resizing = FALSE;
	// 그룹 리스트 초기화
	YObject* tmp;
	POSITION pos = list.GetHeadPosition();
	while (pos){
		tmp = list.GetNext(pos);
		tmp->setSelect(FALSE);
		groupList.AddTail(tmp);
	}

	// 리젼 사각형을 위한 좌표값 생성
	sPoint.SetPoint(10000, 10000);
	ePoint.SetPoint(0, 0);
	CRect rec;
	pos = groupList.GetHeadPosition();
	while (pos){
		tmp = groupList.GetNext(pos);
		rec = tmp->getORect();
		if (sPoint.x > rec.TopLeft().x) sPoint.x = rec.TopLeft().x;
		if (sPoint.y > rec.TopLeft().y) sPoint.y = rec.TopLeft().y;
		if (ePoint.x < rec.BottomRight().x) ePoint.x = rec.BottomRight().x;
		if (ePoint.y < rec.BottomRight().y) ePoint.y = rec.BottomRight().y;
	}
}
コード例 #2
0
ファイル: DocStructRecord.cpp プロジェクト: identity0815/os45
void CDocStructRecordItem::OnDrawCaption(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pMetrics) {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CDocStructRecord* pRecord = (CDocStructRecord*)GetRecord();
    if (pRecord == NULL) {
        return;
    }
    pDrawArgs->nTextAlign = DT_VCENTER;
    if (pRecord->m_nCurrentLayout == DocumentStructureLayout(Thumbnail)) {
        if (pRecord->IsPage()) {
            CRect rcCaption;
            rcCaption.SetRect(pDrawArgs->rcItem.left - RECORD_ITEM_OFFSET + 1, pDrawArgs->rcItem.bottom - RECORD_TEXT_OFFSET - 5, pDrawArgs->rcItem.right - pDrawArgs->pRow->GetTreeDepth() * RECORD_ITEM_OFFSET, pDrawArgs->rcItem.bottom);
            pDrawArgs->rcItem.SetRect(rcCaption.TopLeft(), rcCaption.BottomRight());
        } else {
            CRect rcCaption (pDrawArgs->rcItem);
            rcCaption.left += 3;
            rcCaption.right -= pDrawArgs->pRow->GetTreeDepth() * RECORD_ITEM_OFFSET;
            pDrawArgs->rcItem.SetRect(rcCaption.TopLeft(), rcCaption.BottomRight());
        }
    }

    // If this is a "click" page, draw icon in front of page title
    bool bDrawClickIcon = pRecord->IsPage() && pRecord->m_pContainer != NULL && pRecord->m_pContainer->ShowClickIcon(pRecord->m_pvData);
    if (bDrawClickIcon) { 
        CXTPReportPaintManager* pPaintManager = pDrawArgs->pControl->GetPaintManager();
        if (pPaintManager) {
            CRect rcCaption(pDrawArgs->rcItem);
            CRect rcBitmap(rcCaption.right-22, rcCaption.top, rcCaption.right-2, rcCaption.bottom);
            CSize csBitmap = ((CXTPDocumentStructurePaintManager*)pPaintManager)->DrawCustomBitmap(pDrawArgs->pDC, pDrawArgs->pRow, rcBitmap, 5);
            pDrawArgs->rcItem.right = rcBitmap.left;
        }
    }

    CXTPReportRecordItem::OnDrawCaption(pDrawArgs, pMetrics);
}
コード例 #3
0
void Graphic_Rectangle::drawBoundary(CDC* cdc)
{
		CRect rect = GetBoundary();
		CPen pen(PS_SOLID, 1, RGB(0,0,0));

		cdc->SelectObject(&pen);
		cdc->SelectStockObject(NULL_BRUSH);
		
		cdc->SelectStockObject(WHITE_BRUSH);		
		CRect box(rect.BottomRight().x-5, rect.BottomRight().y-5, rect.BottomRight().x+5, rect.BottomRight().y+5);
		cdc->Rectangle(box);

		box.SetRect(rect.TopLeft().x-5, rect.TopLeft().y-5, rect.TopLeft().x+5, rect.TopLeft().y+5);
		cdc->Rectangle(box);

		box.SetRect(rect.left-5, rect.bottom-5, rect.left+5, rect.bottom+5);
		cdc->Rectangle(box);
		
		box.SetRect(rect.right-5, rect.top-5, rect.right+5, rect.top+5);
		cdc->Rectangle(box);
		
		box.SetRect(rect.CenterPoint().x-5, rect.bottom-5, rect.CenterPoint().x+5, rect.bottom+5);
		cdc->Rectangle(box);

		box.SetRect(rect.CenterPoint().x-5, rect.top-5, rect.CenterPoint().x+5, rect.top+5);
		cdc->Rectangle(box);

		box.SetRect(rect.right-5, rect.CenterPoint().y-5, rect.right+5, rect.CenterPoint().y+5);
		cdc->Rectangle(box);

		box.SetRect(rect.left-5, rect.CenterPoint().y-5, rect.left+5, rect.CenterPoint().y+5);
		cdc->Rectangle(box);
}
コード例 #4
0
ファイル: Gelview.cpp プロジェクト: karlnicholas/GeneDoc
void CGelView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
//	ResizeParentToFit(FALSE);
//	((CMDIChildWnd *)GetParentFrame())->MDIMaximize();

//	m_GelView = TRUE;
	// CButton	m_cDraw;
	CDC* pDC = GetDC();

	CRect ClientRect;
	
	GetClientRect(ClientRect);
	
	CPoint ptl = ClientRect.TopLeft();
	CPoint pbr = ClientRect.BottomRight();

	ptl.x = ptl.x + 220;
	ptl.y = ptl.y + 0;

	pbr.x = pbr.x - 0;
	pbr.y = pbr.y - 0;

	ClientRect.TopLeft() = ptl;
	ClientRect.BottomRight() = pbr;

	int DisplayHeight = ClientRect.Height();
	int DisplayWidth = ClientRect.Width();

	double ypi = pDC->GetDeviceCaps(LOGPIXELSY);
	double xpi = pDC->GetDeviceCaps(LOGPIXELSX);

//	WINDOWPLACEMENT wndpl;
//	m_cDraw.GetWindowPlacement( &wndpl );
//	wndpl.rcNormalPosition.bottom = DisplayHeight - 10;
//	wndpl.rcNormalPosition.right = DisplayWidth - 10;
//	m_cDraw.SetWindowPlacement( &wndpl );

	int x = (int)((double)(DisplayWidth - 10) / xpi * 100.0 );
	int y = (int)((double)(DisplayWidth - 10) / ypi * 100.0 );


	SetGelSize( x, y );

//	x = (int)((double)DisplayWidth / xpi * 100.0 );
//	y = (int)((double)DisplayHeight / ypi * 100.0 );

//	pDoc->m_ViewSize =  CSize( x, y );

	ReleaseDC ( pDC );


	m_init = 1;

}
コード例 #5
0
ファイル: Gelview.cpp プロジェクト: karlnicholas/GeneDoc
void CGelView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	CGenedocDoc *pDoc = GetDocument();


//	if ( pDoc->IsEmbedded() && m_GelView ) {

	if ( m_init ) {

		CDC* pDC = GetDC();
		
		CRect ClientRect;
		
		GetClientRect(ClientRect);
		
		CPoint ptl = ClientRect.TopLeft();
		CPoint pbr = ClientRect.BottomRight();

		ptl.x = ptl.x + 220;
		ptl.y = ptl.y + 0;

		pbr.x = pbr.x - 0;
		pbr.y = pbr.y - 0;

		ClientRect.TopLeft() = ptl;
		ClientRect.BottomRight() = pbr;

		int DisplayHeight = ClientRect.Height();
		int DisplayWidth = ClientRect.Width();

		double ypi = pDC->GetDeviceCaps(LOGPIXELSY);
		double xpi = pDC->GetDeviceCaps(LOGPIXELSX);


//		WINDOWPLACEMENT wndpl;
//		m_cDraw.GetWindowPlacement( &wndpl );
//		wndpl.rcNormalPosition.bottom = DisplayHeight - 10;
//		wndpl.rcNormalPosition.right = DisplayWidth - 10;
//		m_cDraw.SetWindowPlacement( &wndpl );

		int x = (int)((double)(DisplayWidth - 10) / xpi * 100.0 );
		int y = (int)((double)(DisplayHeight - 10) / ypi * 100.0 );

		SetGelSize( x, y );
		
//		x = (int)((double)DisplayWidth / xpi * 100.0 );
//		y = (int)((double)DisplayHeight / ypi * 100.0 );

//		pDoc->m_ViewSize =  CSize( x, y );

		ReleaseDC(pDC);
	}

}
コード例 #6
0
ファイル: OptionTreeList.cpp プロジェクト: ngphloc/agmagic
void COptionTreeList::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// See if disabled
	if (m_otOption->IsDisableInput() || !m_otOption->IsWindowEnabled())
	{
		CWnd::OnLButtonUp(nFlags, point);
		return;
	}

	// Draw column
	if (m_bColDrag == TRUE)
	{
		// -- Declare variables
		CRect rcClient;

		// -- Get client rectangle
		GetClientRect(rcClient);

		// -- Release capture
		m_bColDrag = FALSE;

		// -- Release capture
		ReleaseCapture();

		// -- Resize limit
		// -- -- Left
		if (point.x < (OT_EXPANDCOLUMN + OT_RESIZEBUFFER))
		{
			// -- -- -- Set column
			m_otOption->SetColumn(OT_EXPANDCOLUMN + OT_RESIZEBUFFER);
		}
		// -- -- Right
		else if (point.x > (rcClient.BottomRight().x - OT_RESIZEBUFFER))
		{
			// -- -- -- Set column
			m_otOption->SetColumn(rcClient.BottomRight().x - OT_RESIZEBUFFER);
		}
		else
		{
			// -- -- -- Set column
			m_otOption->SetColumn(point.x);
		}

		// -- Update move items
		m_otOption->UpdateMoveAllItems();

		// -- Force redraw
		Invalidate();

		// -- Update window
		UpdateWindow();
	}

	CWnd::OnLButtonUp(nFlags, point);
}
コード例 #7
0
ファイル: TRiASView.cpp プロジェクト: hkaiser/TRiAS
void RetrievePointDims (LONG lONr, CRect &rrc, LONG &rlEpsX, LONG &rlEpsY)
{
Punkt pt1, pt2;

	DCtoOCEx (rrc.TopLeft(), &pt1);
	rrc.TopLeft().x = pt1.GetX();
	rrc.TopLeft().y = pt1.GetY();

	DCtoOCEx (rrc.BottomRight(), &pt2);
	rrc.BottomRight().x = pt2.GetX();
	rrc.BottomRight().y = pt2.GetY();

	rlEpsX = abs(rrc.right - rrc.left);
	rlEpsY = abs(rrc.top - rrc.bottom);
}
コード例 #8
0
ファイル: TextFrame.cpp プロジェクト: Nordanvind/airgit
LRESULT TextFrame::onClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled) {
	CRect rc;
	if(!IsIconic()){
		//Get position of window
		GetWindowRect(&rc);
				
		//convert the position so it's relative to main window
		::ScreenToClient(GetParent(), &rc.TopLeft());
		::ScreenToClient(GetParent(), &rc.BottomRight());
				
		//save the position
		SettingsManager::getInstance()->set(SettingsManager::TEXT_BOTTOM, (rc.bottom > 0 ? rc.bottom : 0));
		SettingsManager::getInstance()->set(SettingsManager::TEXT_TOP, (rc.top > 0 ? rc.top : 0));
		SettingsManager::getInstance()->set(SettingsManager::TEXT_LEFT, (rc.left > 0 ? rc.left : 0));
		SettingsManager::getInstance()->set(SettingsManager::TEXT_RIGHT, (rc.right > 0 ? rc.right : 0));
	}

	SettingsManager::getInstance()->removeListener(this);

	if (viewFile) {
		ViewFileManager::getInstance()->removeFile(viewFile->getTTH());
		ViewFileManager::getInstance()->removeListener(this);
	}

	bHandled = FALSE;
	return 0;
}
コード例 #9
0
void CDlgAppConfig::ReSize(int nID,bool nZoom)
{
	CRect Rect; 
	if( GetDlgItem(nID)->GetSafeHwnd() )  
	{
		GetDlgItem(nID)->GetWindowRect(Rect); 
		ScreenToClient(Rect); 
		//计算控件左上角点
		CPoint OldTLPoint,TLPoint; 
		OldTLPoint = Rect.TopLeft(); 
		TLPoint.x = long(OldTLPoint.x *m_Multiple_width); 
		TLPoint.y = long(OldTLPoint.y * m_Multiple_height );

		//计算控件右下角点
		CPoint OldBRPoint,BRPoint;
		OldBRPoint = Rect.BottomRight();
		if(nZoom){
			BRPoint.x = long(OldBRPoint.x *m_Multiple_width); 
			BRPoint.y = long(OldBRPoint.y *m_Multiple_height); 
		}else{
			BRPoint.x = long(TLPoint.x + Rect.Width()); 
			BRPoint.y = long(TLPoint.y + Rect.Height()); 
		}
		//移动控件到新矩形
		Rect.SetRect(TLPoint,BRPoint); 
		GetDlgItem(nID)->MoveWindow(Rect,false); 
	}
}
コード例 #10
0
ファイル: EPropWnd.cpp プロジェクト: neil-yi/ffsource
void EPropWnd::EnsureVisibility( const CRect& r )
{
	CRect cr;
	GetClientRect(&cr);

	CPoint tl = _CP2SP( cr.TopLeft()     );
	CPoint br = _CP2SP( cr.BottomRight() );
	cr.SetRect( tl , br );

	int nCurrentScrollPos = GetScrollPos( SB_VERT );

	int nDeltay = 0;

	int nsp = -1;

	if( r.bottom > cr.bottom )
	{
		nsp = r.bottom - cr.Height();
		ASSERT(nsp>=0);

		cr.OffsetRect( 0 , nsp );
	}

	if( r.top < cr.top )							//hvis toppen kom over øverste..
	{
		nsp = r.top;
		ASSERT(nsp>=0);
	}

	if( nsp>=0 )
	{
		SetScrollPos( SB_VERT , nsp );
	}
}
コード例 #11
0
ファイル: XElement.cpp プロジェクト: VNOC/XUI
XResult CXElement::SetSize( Property::SizeType param )
{
	CRect rect;
	GetRect(rect);
	rect.BottomRight() = rect.TopLeft() + param;
	return SetRect(rect);
}
コード例 #12
0
ファイル: SystemFrame.cpp プロジェクト: jameskumar/airgit
LRESULT SystemFrame::onClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled) {
	CRect rc;
	if(!IsIconic()){
		//Get position of window
		GetWindowRect(&rc);
				
		//convert the position so it's relative to main window
		::ScreenToClient(GetParent(), &rc.TopLeft());
		::ScreenToClient(GetParent(), &rc.BottomRight());
				
		//save the position
		SettingsManager::getInstance()->set(SettingsManager::SYSLOG_BOTTOM, (rc.bottom > 0 ? rc.bottom : 0));
		SettingsManager::getInstance()->set(SettingsManager::SYSLOG_TOP, (rc.top > 0 ? rc.top : 0));
		SettingsManager::getInstance()->set(SettingsManager::SYSLOG_LEFT, (rc.left > 0 ? rc.left : 0));
		SettingsManager::getInstance()->set(SettingsManager::SYSLOG_RIGHT, (rc.right > 0 ? rc.right : 0));
	}

	ctrlPad.SetWindowText(_T(""));

	LogManager::getInstance()->removeListener(this);
	SettingsManager::getInstance()->removeListener(this);
	bHandled = FALSE;
	WinUtil::setButtonPressed(IDC_SYSTEM_LOG, false);
	return 0;
	
}
コード例 #13
0
ファイル: ruler.cpp プロジェクト: jetlive/skiaming
void CRulerItem::Invalidate()
{
    CRect rc = GetHitRectPix();
    m_pRuler->RulerToClient(rc.TopLeft());
    m_pRuler->RulerToClient(rc.BottomRight());
    m_pRuler->InvalidateRect(rc);
}
コード例 #14
0
ファイル: CDynGameData.cpp プロジェクト: emlai/tapankaikki
bool CDynGameData::CharCollision(const CRect<int>& aRect,CCharacter* aSelf)
{
		CCoord<float> left = aRect.TopLeft();
		CCoord<float> right = aRect.BottomRight();

		std::vector< CEnemy >::iterator low = 
			lower_bound(iRuntimeData->Enemies().begin(),iRuntimeData->Enemies().end(),left,SortOperator);
		std::vector< CEnemy >::iterator high = 
			upper_bound(iRuntimeData->Enemies().begin(),iRuntimeData->Enemies().end(),right,SortOperator);
		CPlayer* ptr2;

		while(low != high)
		{	
			if (static_cast<CCharacter*>(&(*low))!=aSelf)
				if (low->CollisionCheck(aRect))
					return true;
			low++;
		}

		for (int b=0;b<iAnyPlayer.size();b++) 
		{
			ptr2 = iAnyPlayer[b];
			if (static_cast<CCharacter*>(ptr2)!=aSelf&&
			    !ptr2->iDead&&
			    ptr2->CollisionCheck(aRect))
				return true;
		}

		return false;
}
コード例 #15
0
void gkToolBarPaneBase::RepositionWindowInternal(AFX_SIZEPARENTPARAMS* lpLayout,HWND hWnd, LPCRECT lpRect)
{
	ASSERT(hWnd != NULL);
	ASSERT(lpRect != NULL);
	HWND hWndParent = ::GetParent(hWnd);
	ASSERT(hWndParent != NULL);

	if (lpLayout != NULL && lpLayout->hDWP == NULL)
		return;

	// first check if the new rectangle is the same as the current
	CRect rectOld;
	::GetWindowRect(hWnd, rectOld);
	::ScreenToClient(hWndParent, &rectOld.TopLeft());
	::ScreenToClient(hWndParent, &rectOld.BottomRight());
	if (::EqualRect(rectOld, lpRect))
		return;     // nothing to do

	// try to use DeferWindowPos for speed, otherwise use SetWindowPos
	if (lpLayout != NULL)
	{
		lpLayout->hDWP = ::DeferWindowPos(lpLayout->hDWP, hWnd, NULL,
			lpRect->left, lpRect->top,  lpRect->right - lpRect->left,
			lpRect->bottom - lpRect->top, SWP_NOACTIVATE|SWP_NOZORDER);
	}
	else
	{
		::SetWindowPos(hWnd, NULL, lpRect->left, lpRect->top,
			lpRect->right - lpRect->left, lpRect->bottom - lpRect->top,
			SWP_NOACTIVATE|SWP_NOZORDER);
	}
}
コード例 #16
0
//重新布局窗体内的控件//
void CDeviceChiDlg::ReSize()
{
	float fsp[2];
	POINT recNewSize; //获取现在对话框的大小//  
	CRect TempRect;
	GetClientRect(&TempRect);     //取客户区大小//    
	recNewSize.x = TempRect.right - TempRect.left;
	recNewSize.y = TempRect.bottom - TempRect.top;
	fsp[0] = (float)recNewSize.x / m_OldSize.x;
	fsp[1] = (float)recNewSize.y / m_OldSize.y;
	CRect Rect;
	int woc;
	CPoint OldTLPoint, TLPoint; //左上角//  
	CPoint OldBRPoint, BRPoint; //右下角//  
	HWND  hwndChild = ::GetWindow(m_hWnd, GW_CHILD);  //列出所有控件//    
	while (hwndChild)
	{
		woc = ::GetDlgCtrlID(hwndChild);//取得ID//  
		GetDlgItem(woc)->GetWindowRect(Rect);
		ScreenToClient(Rect);
		OldTLPoint = Rect.TopLeft();
		TLPoint.x = long(OldTLPoint.x*fsp[0]);
		TLPoint.y = long(OldTLPoint.y*fsp[1]);
		OldBRPoint = Rect.BottomRight();
		BRPoint.x = long(OldBRPoint.x *fsp[0]);
		BRPoint.y = long(OldBRPoint.y *fsp[1]);
		Rect.SetRect(TLPoint, BRPoint);
		GetDlgItem(woc)->MoveWindow(Rect, TRUE);
		hwndChild = ::GetWindow(hwndChild, GW_HWNDNEXT);
	}
	m_OldSize = recNewSize;
}
コード例 #17
0
ファイル: CurveObj.cpp プロジェクト: wth515812076/WineAnaSys
//##ModelId=48A14586031E
void CCurveObj::MouseSelectZoomIn(CRect zoomRect)
{
	CFloatPoint leftTop;
	CFloatPoint rightBottom;
	CPoint point;
///////////////////////////////////////////////////////////	
	point = zoomRect.TopLeft();
	double dataX = (m_bDrawReverseX)?(m_cPlotRect.right - point.x)/m_dHorizontalFactor + m_MinPosFp.m_PosX - m_MoveOffsetFp.m_PosX + m_ZoomOffsetPrevious.m_PosX/2:
	                          (point.x - m_cPlotRect.left)/m_dHorizontalFactor + m_MinPosFp.m_PosX - m_MoveOffsetFp.m_PosX + m_ZoomOffsetPrevious.m_PosX/2;
    double dataY = (m_bDrawReverseY)?(point.y - m_cPlotRect.top)/m_dVerticalFactor + m_MinPosFp.m_PosY - m_MoveOffsetFp.m_PosY + m_ZoomOffsetPrevious.m_PosY/2:
							  (m_cPlotRect.bottom - point.y)/m_dVerticalFactor + m_MinPosFp.m_PosY - m_MoveOffsetFp.m_PosY + m_ZoomOffsetPrevious.m_PosY/2;
	leftTop.InitPoint(dataX,dataY);
/////////////////////////////////////////////////////////////
	point = zoomRect.BottomRight();
	dataX = (m_bDrawReverseX)?(m_cPlotRect.right - point.x)/m_dHorizontalFactor + m_MinPosFp.m_PosX - m_MoveOffsetFp.m_PosX + m_ZoomOffsetPrevious.m_PosX/2:
	                          (point.x - m_cPlotRect.left)/m_dHorizontalFactor + m_MinPosFp.m_PosX - m_MoveOffsetFp.m_PosX + m_ZoomOffsetPrevious.m_PosX/2;
    dataY = (m_bDrawReverseY)?(point.y - m_cPlotRect.top)/m_dVerticalFactor + m_MinPosFp.m_PosY - m_MoveOffsetFp.m_PosY + m_ZoomOffsetPrevious.m_PosY/2:
							  (m_cPlotRect.bottom - point.y)/m_dVerticalFactor + m_MinPosFp.m_PosY - m_MoveOffsetFp.m_PosY + m_ZoomOffsetPrevious.m_PosY/2;
	rightBottom.InitPoint(dataX,dataY);
/////////////////////////////////////////////////////////////////
	m_MaxPosFp.InitPoint(-10000000000.0,-10000000000.0);
	m_MinPosFp.InitPoint(10000000000.0,10000000000.0);
	m_MoveOffsetFp.InitPoint(0.0,0.0);
	m_ZoomOffsetPrevious.InitPoint(0.0,0.0);

	this->CalculateMaxPoint(m_MaxPosFp,&leftTop);
    this->CalculateMaxPoint(m_MaxPosFp,&rightBottom);

	this->CalculateMinPoint(m_MinPosFp,&leftTop);
    this->CalculateMinPoint(m_MinPosFp,&rightBottom);

	m_ZoomOffsetFp = m_MaxPosFp - m_MinPosFp;
}
コード例 #18
0
ファイル: CheckStatic.cpp プロジェクト: github188/code
void CCheckStatic::SetCheck(BOOL check)
{
	m_Check.SetCheck(check);

	if (m_ItemID.GetSize() > 0)
	{
		for (int i = 0; i < m_ItemID.GetSize(); i++)
			GetParent()->GetDlgItem(m_ItemID[i])->EnableWindow(check);
	}
	else
	{
		for (int i = 0; i < m_IDList.GetSize(); i++)
		{
			CWnd * pWnd = GetParent()->GetDlgItem(m_IDList[i]);
			
			// We grab the rect of the item, put it into client co-ord's and only modify items inside our static box
			CRect rc;
			
			pWnd->GetWindowRect(&rc);
			ScreenToClient(&rc);
			
			if (m_rcStatic.PtInRect(rc.TopLeft()) && m_rcStatic.PtInRect(rc.BottomRight()))
				pWnd->EnableWindow(check);
		}
	}
}
コード例 #19
0
void COXScrollTip::RedrawBackground(CRect rect)
	// --- In  :
	// --- Out : 
	// --- Returns :
	// --- Effect : Updates the windows that are covered by the specified rect (screen coordinates)
	{
	// We give the windows that are under the top left and bottom right corner of 
	// the specified rect the opportunity the redraw themselves now.
	// Other areas will be repainted through a (posted) WM_PAINT, which will
	// be handled later.
	if (!rect.IsRectEmpty())
		{
		CWnd* pBackTopLeftWnd = CWnd::WindowFromPoint(rect.TopLeft());
		if (pBackTopLeftWnd != NULL)
			{
			pBackTopLeftWnd = pBackTopLeftWnd->GetTopLevelParent();
			ASSERT(pBackTopLeftWnd != NULL);
			pBackTopLeftWnd->RedrawWindow(&rect);
			}
		CWnd* pBackBottomRightWnd = CWnd::WindowFromPoint(rect.BottomRight());
		if ((pBackBottomRightWnd != NULL) && (pBackTopLeftWnd != pBackBottomRightWnd))
			{
			pBackBottomRightWnd = pBackBottomRightWnd->GetTopLevelParent();
			ASSERT(pBackBottomRightWnd != NULL);
			pBackBottomRightWnd->RedrawWindow(&rect);
			}
		}
	}
コード例 #20
0
void CReportEntityLine::Draw( CDC* dc, CRect rect )
/* ============================================================
	Function :		CReportEntityLine::Draw
	Description :	Draws the object.
	Access :		Public

	Return :		void
	Parameters :	CDC* dc		-	"CDC" to draw to
					CRect rect	-	True (zoomed) rectangle to 
									draw to.
					
	Usage :			Called from "CDiagramEditor::DrawObjects".

   ============================================================*/
{
	CPen pen;
	const float* table = Drawer::GetColorByIndex(GetBorderColor());
	COLORREF clr = RGB((int)(table[0]*255.0f),(int)(table[1]*255.0f),(int)(table[2]*255.0f));
	pen.CreatePen( PS_SOLID, GetBorderThickness(), clr );
	dc->SelectObject( &pen );

	dc->MoveTo( rect.TopLeft() );
	dc->LineTo( rect.BottomRight() );

	dc->SelectStockObject( BLACK_PEN );

}
コード例 #21
0
ファイル: TexViewer.cpp プロジェクト: sailei1/knightonline
CTexViewer::eDRAGTYPE CTexViewer::CheckDragType(CRect rcSel, CPoint point)
{
	CPoint pt;
	CRect rcCheck;
	const int W = 4;
	pt = rcSel.TopLeft();
	rcCheck.SetRect(pt.x-W, pt.y-W, pt.x+W, pt.y+W);
	if (rcCheck.PtInRect(point)) return DRAGTYPE_LEFTTOP;
	pt = rcSel.BottomRight();
	rcCheck.SetRect(pt.x-W, pt.y-W, pt.x+W, pt.y+W);
	if (rcCheck.PtInRect(point)) return DRAGTYPE_RIGHTBOTTOM;
	pt = CPoint(rcSel.right, rcSel.top);
	rcCheck.SetRect(pt.x-W, pt.y-W, pt.x+W, pt.y+W);
	if (rcCheck.PtInRect(point)) return DRAGTYPE_RIGHTTOP;
	pt = CPoint(rcSel.left, rcSel.bottom);
	rcCheck.SetRect(pt.x-W, pt.y-W, pt.x+W, pt.y+W);
	if (rcCheck.PtInRect(point)) return DRAGTYPE_LEFTBOTTOM;

	rcCheck.SetRect(rcSel.left-W, rcSel.top, rcSel.left+W, rcSel.bottom);
	if (rcCheck.PtInRect(point)) return DRAGTYPE_LEFT;
	rcCheck.SetRect(rcSel.right-W, rcSel.top, rcSel.right+W, rcSel.bottom);
	if (rcCheck.PtInRect(point)) return DRAGTYPE_RIGHT;
	rcCheck.SetRect(rcSel.left, rcSel.top-W, rcSel.right, rcSel.top+W);
	if (rcCheck.PtInRect(point)) return DRAGTYPE_TOP;
	rcCheck.SetRect(rcSel.left, rcSel.bottom-W, rcSel.right, rcSel.bottom+W);
	if (rcCheck.PtInRect(point)) return DRAGTYPE_BOTTOM;

	if (rcSel.PtInRect(point)) return DRAGTYPE_MOVE;
	return DRAGTYPE_NONE;
}
コード例 #22
0
ファイル: MainFrm.cpp プロジェクト: new299/QRImage
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    if (! m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
                                | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
            ! m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        TRACE0("Failed to create toolbar¥n");
        return -1;
    }

    if (! m_wndStatusBar.Create(this) ||
            ! m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
    {
        TRACE0("Failed to create status bar¥n");
        return -1;
    }

    // ステータスバーインジケータが正しく表示されるよう先頭ペイン幅を変更
    m_wndStatusBar.SetPaneInfo(0, 0, SBPS_NOBORDERS | SBPS_STRETCH, 0);

    // 最小サイズで表示
    CRect rcWindow;
    GetWindowRect(&rcWindow);
    rcWindow.BottomRight() = rcWindow.TopLeft();
    MoveWindow(rcWindow);

    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar);

    return 0;
}
コード例 #23
0
LRESULT FavoriteHubsFrame::onClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled) {
	if(!closed) {
		FavoriteManager::getInstance()->removeListener(this);
		SettingsManager::getInstance()->removeListener(this);
		ClientManager::getInstance()->removeListener(this);
		closed = true;		
		WinUtil::setButtonPressed(IDC_FAVORITES, false);
		PostMessage(WM_CLOSE);
		return 0;
	} else {
		WinUtil::saveHeaderOrder(ctrlHubs, SettingsManager::FAVORITESFRAME_ORDER, 
		SettingsManager::FAVORITESFRAME_WIDTHS, COLUMN_LAST, columnIndexes, columnSizes);

		CRect rc;
		if(!IsIconic()){
			//Get position of window
			GetWindowRect(&rc);
				
			//convert the position so it's relative to main window
			::ScreenToClient(GetParent(), &rc.TopLeft());
			::ScreenToClient(GetParent(), &rc.BottomRight());
				
			//save the position
			SettingsManager::getInstance()->set(SettingsManager::FAV_BOTTOM, (rc.bottom > 0 ? rc.bottom : 0));
			SettingsManager::getInstance()->set(SettingsManager::FAV_TOP, (rc.top > 0 ? rc.top : 0));
			SettingsManager::getInstance()->set(SettingsManager::FAV_LEFT, (rc.left > 0 ? rc.left : 0));
			SettingsManager::getInstance()->set(SettingsManager::FAV_RIGHT, (rc.right > 0 ? rc.right : 0));
		}

		bHandled = FALSE;
		return 0;
	}	
}
コード例 #24
0
ファイル: CConvert.cpp プロジェクト: housemeow/AOE2
	bool CConvert::GridRectInRange(const CRect& r){
		if(GridPointInRange(r.TopLeft()) && GridPointInRange(r.BottomRight())){
			return true;
		}else{
			return false;
		}
	}
コード例 #25
0
ファイル: TRiASView.cpp プロジェクト: hkaiser/TRiAS
void RetrieveLineDim (LONG lONr, CRect &rrc, LONG &rlEps)
{
	rrc.BottomRight() = rrc.TopLeft();
	rrc.bottom += LINE_EPSILON_DC;
	rrc.right += LINE_EPSILON_DC;

Punkt pt1, pt2;

	DCtoOCEx (rrc.TopLeft(), &pt1);
	rrc.TopLeft().x = pt1.GetX();
	rrc.TopLeft().y = pt1.GetY();

	DCtoOCEx (rrc.BottomRight(), &pt2);
	rrc.BottomRight().x = pt2.GetX();
	rrc.BottomRight().y = pt2.GetY();

	rlEps = (abs(rrc.right - rrc.left) + abs(rrc.top - rrc.bottom))/2;
}
コード例 #26
0
/**
 * @brief Display the line/word difference highlight in edit view
 */
static void
HighlightDiffRect(CMergeEditView * pView, const CRect & rc)
{
	if (rc.top == -1)
	{
		// Should we remove existing selection ?
	}
	else
	{
		// select the area
		// with anchor at left and caret at right
		// this seems to be conventional behavior in Windows editors
		pView->SelectArea(rc.TopLeft(), rc.BottomRight());
		pView->SetCursorPos(rc.BottomRight());
		pView->SetNewAnchor(rc.TopLeft());
		// try to ensure that selected area is visible
		pView->EnsureVisible(rc.TopLeft(), rc.BottomRight());
	}
}
コード例 #27
0
ファイル: Twindow.cpp プロジェクト: JERUKA9/ffdshow-tryouts
CRect Twindow::getChildRect(int id) const
{
    CRect rs;
    GetWindowRect(GetDlgItem(m_hwnd,id),&rs);
    CPoint tl=rs.TopLeft();
    ScreenToClient(m_hwnd,&tl);
    CPoint br=rs.BottomRight();
    ScreenToClient(m_hwnd,&br);
    return CRect(tl,br);
}
コード例 #28
0
void 
CTimeSliceView::drawAlignCross( CTimeSliceDoc* pDoc, CDC* pDC )
{
   //
   // Only draw the cross on the view that currently has the focus.
   //
   if( pDoc->m_bDrawAlignCross && m_bDrawColourImage )
   {
      CPoint& point = pDoc->m_pointAlignCross;

      CRect rect;
      pDC->GetBoundsRect( &rect, 0 );

      pDC->SelectStockObject( GRAY_BRUSH );

      pDC->Rectangle( 0, point.y - 2, rect.BottomRight().x, point.y + 2 );
      pDC->Rectangle( point.x - 2, 0, point.x + 2, rect.BottomRight().y );
   }
}
コード例 #29
0
ファイル: Group.cpp プロジェクト: danmooji/Newdanmooji
void Group::drawBoundary(CDC* cdc)
{
	CRect rect = getBoundary();// 그릴 사각형을 가져온다.

	CPen m_pen(PS_SOLID, 1, RGB(0, 0, 0));// 그릴 펜의 속성을 지정
	CPen *oldpen = cdc->SelectObject(&m_pen);
	cdc->SelectStockObject(NULL_BRUSH);
	cdc->Rectangle(rect);// 테두리 사각형 그리고

	cdc->SelectStockObject(WHITE_BRUSH);

	CRect box(rect.TopLeft().x - 5, rect.TopLeft().y - 5, rect.TopLeft().x + 5, rect.TopLeft().y + 5);
	cdc->Rectangle(box);// 왼쪽 위 사각형 그리고

	box.SetRect(rect.right - 5, rect.top - 5, rect.right + 5, rect.top + 5);
	cdc->Rectangle(box);// 오른쪽 위 사각형 그리고

	box.SetRect(rect.left - 5, rect.bottom - 5, rect.left + 5, rect.bottom + 5);
	cdc->Rectangle(box);// 왼쪽 아래 사각형 그리고

	box.SetRect(rect.BottomRight().x - 5, rect.BottomRight().y - 5, rect.BottomRight().x + 5, rect.BottomRight().y + 5);
	cdc->Rectangle(box);// 오른쪽 아래 사각형 그리고

	//노드 데이터 변경
	POSITION posNode = NodeData.GetHeadPosition();
	while (posNode)
	{
		Figure* pObj = (Figure*)NodeData.GetNext(posNode);
		pObj->draw(cdc);
	}
	//차일드 데이터 변경(recursion이 일어남)
	POSITION posChild = Child.GetHeadPosition();
	while (posChild)
	{
		Group* pGroup = (Group*)Child.GetNext(posChild);
		pGroup->drawBoundary(cdc);
	}


	cdc->SelectObject(&oldpen);
}
コード例 #30
0
LRESULT CWinHotkeyCtrl::OnLeftClick(WPARAM wParam, LPARAM lParam)
{
	CRect r;
	CPoint pt;
	CEditWithButton::GetWindowRect(r);
	CRect rectButton = GetButtonRect(r);
	pt = rectButton.BottomRight();
	pt.x = pt.x-(rectButton.Width());
	OnContextMenu(this, pt);

	return 0;
}