3/18/09

Visual c++ IntersectRect example tutorial




In this visual c++ IntersectRect Example we will learn how to use the mfc intersection function


The intersected rectangle hatched in Red

to get the exefile click here and download the file and get the complete project and thinks of additions you can make



To start


1- Start a new project and let us name it IntersectRectangle

2- chose single document and deselect printing and print view no need for them

3- Add the following members to the view class

public:

BOOL m_b_IsIntersected; // weather there is intersection or not

CRect m_Gray_Rectangle , m_Moving_Rectangle ,m_RectIntersection ;

// constant REct and moving and the rectangle of intersection

make your data members public to avoid using getters and setters

4-Initilize the values of the two rectangles in the constructor as follows


CIntersectrectangleView::CIntersectrectangleView():m_Moving_Rectangle(100,60,160,120),m_Gray_Rectangle(90,80,120,110),m_b_IsIntersected(FALSE)

5-

Add the following messege handler to the derived view class


WM_TIMER ,WM_LBUTONDOWN, WM_RBUTTONDOWN

and edit them as follows

start with Wm timer


void CIntersectrectangleView::OnTimer(UINT nIDEvent) {

if(m_Moving_Rectangle.right> 300) m_Moving_Rectangle.OffsetRect(-280,0) ;

m_Moving_Rectangle.OffsetRect(20,0);InvalidateRect(NULL,TRUE); CView::OnTimer(nIDEvent);}


and

void CIntersectrectangleView::OnRButtonDown(UINT nFlags, CPoint point) { KillTimer(1);



CView::OnRButtonDown(nFlags, point);}


and


void CIntersectrectangleView::OnLButtonDown(UINT nFlags, CPoint point) {

SetTimer(1, 450,NULL) ;

CView::OnLButtonDown(nFlags, point);

}


6-


edit the ondraw member functions as follows


void CIntersectrectangleView::OnDraw(CDC* pDC){






pDC->TextOut(60,13,"Press the right button to start moving the black rectangle and the right to stop it and notice the intersection");

pDC->SelectStockObject(BLACK_BRUSH);

pDC->Rectangle(m_Moving_Rectangle);

pDC->SelectStockObject(LTGRAY_BRUSH);

pDC->Rectangle(m_Gray_Rectangle);

LPRECT lp_move = m_Moving_Rectangle.operator LPRECT() ;

// cast the moving rect to LPRECT

LPRECT lp_gray = m_Gray_Rectangle.operator LPRECT() ;

// and so as to the grayrect



m_b_IsIntersected = m_RectIntersection.IntersectRect( lp_move ,lp_gray);
// find whethere there is intersection and draw the intersection rect with hatchbrush
if( m_b_IsIntersected){



CBrush brushHatch(HS_DIAGCROSS, RGB(255, 90, 0));

pDC->SelectObject(brushHatch) ;

pDC->Rectangle(m_RectIntersection);
//I used getstockobject because it is easier to use

}

8- finally build the application and see how it works





Do not forget to use casting when using intersictRect it only accept arguments of type LPRECT

for more example see the rest of the blog


I hope that you enjoyed this tutorial









}



18 comments:

  1. It s a very useful page. Thank you. 25515accfc7b8a8ef777d2b51ece570d
    demre
    genc
    aksoy
    gumusova
    atkaracalar
    can
    catalca
    salpazari
    alaca

    ReplyDelete
  2. It s a very useful page. Thank you. 0e604179a3c2be7e070714ec34e2856e
    dogansehir
    isparta
    bozdogan
    orhaneli
    bandirma
    sarkisla
    konak
    mihalcik
    yenipazar

    ReplyDelete
  3. It s a very useful page. Thank you. 0da115d0bca23d4cd90e2b712c4570a1
    sarikamis
    cavdir
    dereli
    camoluk
    pozanti
    gercus
    bogazkale
    karsiyaka
    yatagan

    ReplyDelete
  4. It s a very useful page. Thank you. 5c5931243f639ddd880182fb708f95cf
    aydincik
    alanya
    karaman
    kigi
    sarikaya
    kofcaz
    iznik
    gelibolu
    damal

    ReplyDelete
  5. Congratulations on your article, it was very helpful and successful. e0767a776380a0721ad24e285d85be38
    website kurma
    sms onay
    website kurma

    ReplyDelete
  6. Thank you for your explanation, very good content. 7b990fea6e7ab10453ecb495e88790ed
    define dedektörü

    ReplyDelete
  7. Thanks for your article. 60d2d20788cf71a6672c01d7c0724ff1
    evde iş imkanı

    ReplyDelete

leave me messege