• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何實現一個橡皮區矩形

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    CRectTracker是一個很有用的類,可以通過調用CRectTracker::TrackRubberBand 響應WM_LBUTTONDOWN消息來創建一個橡皮區矩形。 下例表明使用CRectTracker移動和重置視窗中的藍色橢圓的大小是很容易的事情。 首先,在文件檔中聲明一個CRectTracker數據成員: cl
    CRectTracker是一個很有用的類,可以通過調用CRectTracker::TrackRubberBand 響應WM_LBUTTONDOWN消息來創建一個橡皮區矩形。
    下例表明使用CRectTracker移動和重置視窗中的藍色橢圓的大小是很容易的事情。
    首先,在文件檔中聲明一個CRectTracker數據成員:
    class CSampleView : Public CView
    {

    public :
    CrectTracker m_tracker

    }
    其次,在文檔類的構造函數中初始化CRectTracker 對象:
    CSampleDoc:: CSampleDOC ()
    {
    //Initialize tracker position, size and style.
    m_tracker.m_rect.SetRect (0, 0, 10, 10)
    m_tracker.m_nStyle=CRectTracker:: resizeInside | CRectTracker ::dottedLine
    }
    然后,在OnDraw函數中畫橢圓和蹤跡矩形:
    void CSampleView:: OnDraw (CDC* pDC)
    {
    CSampleDoc* pDoc=GetDocument ()
    ASSERT_VALID (pDoc)
    //Select blue brush into device context.
    CBrush brush (RGB (0, 0, 255))
    CBrush* pOldBrush=pDC->SelectObject (&brush)
    //draw ellipse in tracking rectangle.
    Crect rcEllipse
    pDoc->m_tracker.GetTrueRect (rcEllipse)
    pDC->Ellipse (rcEllipse)
    //Draw tracking rectangle.
    pDoc->m_tracker.Draw (pDC)
    //Select blue brush out of device context.
    pDC->Selectobject (pOldBrush)
    }
    最后,使用ClassWizard處理WM_LBUTTONDOWN消息,并增加下述代碼。該段代碼根據鼠標擊鍵情況可以拖放、移動或者重置橢圓的大小。
    void CSampleView::OnLButtonDown (UINT nFlags, CPoint point)
    {
    //Get pointer to document.
    CSampleDoc* pDoc=GetDocument ()
    ASSERT_VALID (pDoc)
    //If clicked on ellipse, drag or resize it.Otherwise create a
    //rubber-band rectangle nd create a new ellipse.
    BOOL bResult=pDoc->m_tracker.HitTest (point)!= CRectTracker::hitNothing
    //Tracker rectangle changed so update views.
    if (bResult)
    {
    pDoc->m_tracker.Track (this,point,TRue)
    pDoc->SetModifiedFlag ()
    pDoc->UpdateAllViews (NULL)
    }
    else
    pDoc->m-tracker.TrackRubberBand(this,point,TRUE)
    CView:: onLButtonDown (nFlags,point)

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>