如何用鼠标拉矩形选取画元?

解决方案 »

  1.   

    //鼠标左键按下
    void CCAMSView::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    // just to demonstrate CRectTracker::TrackRubberBand
    CRectTracker tracker;
    //直到用户释放了鼠标才会退出在此直接获取RECT
    tracker.TrackRubberBand(this, ptClick, pDoc->m_bAllowInvert); // see if rubber band intersects with the doc's tracker
    CRect rcRange;
    tracker.m_rect.NormalizeRect(); // so intersect rect worksSelectStyle = pDoc->SelectObject(rcRange,&Count); //如果选定框中没有选中对象,则使用最后一个点来选取
    if(SelectStyle == 0)   
    {
    SelectStyle = pDoc->SelectObject(CPoint(rcRange.left,rcRange.top),&Count);
    }}
    看到没有,用这个 CRectTracker到 MSDN 上查一把,有一个使用例子,太详细了
      

  2.   

    不好意思上面的忘了一句
    rcRange = tracker.m_rect;
    SelectStyle = pDoc->SelectObject(rcRange,&Count);
      

  3.   

    采用CRectTracker类,通过调用CRectTracker::TrackRubberBand来响应
    WM_LBUTTONDOWN消息
      

  4.   

    不行呀,我写不出来呀!!!
    MSDN也看不懂,几位大哥,能不能说细点呀?
    谢谢了!
      

  5.   

    TRACKER: Illustrates Various CRectTracker Styles and OptionsClick to open or copy the TRACKER project files.The TRACKER sample is a test application that provides an exhaustive illustration of CRectTracker member functions, styles, and options. For a real-world example that uses CRectTracker, see DRAWCLI, the object-oriented drawing sample application.
    到MSDN 中选中搜索    输入下面的内容
    Click to open or copy the TRACKER project files.去掉  相似字符选项点列出主题   找到上面显示的就点一下下载就可以了
    要学会使用 MSDN 啊
      

  6.   

    Re:Saimen(单身情人) 
    这位大哥,小弟找到那个CRectTracker类了,例子也看了就是看不懂.
    里面的一些变量不知是什么,大哥,帮帮兄弟吧!
      

  7.   

    仔细看看CRectTracker
    看你的选择有什么要求,是要图元完全在矩形中,才选中,还是只要跨越过图元,就将它选中,当然,图元最后包含在一个矩形的空间内, 有8个控制点,如果图元是非矩形的,请使用区域,有一些API专门对区域操作.
    这种程序要求:结构良好(用面向对象的方法),否则,写到后面会很难看,具体算法可用一个循环判断8个点的座标,看是否在所划的矩形内
      

  8.   

    不行就把我上面的代码加到你的程序中去吧,几个参数要改一下要不把你的程序发过来,我帮你改
    要多想想多看看,多用 MSDN 查我的 Email:  [email protected]
    Re:Saimen(单身情人) 
    这位大哥,小弟找到那个CRectTracker类了,例子也看了就是看不懂.
    里面的一些变量不知是什么,大哥,帮帮兄弟吧!
    你想让我如何帮呢? 我自己都不知如何说了