我建立了若干图形(简单的长方形),想要实现在多选情况下一齐拖动。现已经实现多选即将一组图形的坐标位置记录在一个array中,我的想法是在鼠标move过程中,计算差值,然后array中都加上这个值。但在具体实现的时候遇到了问题。请高手将OnLBtnDwn(),OnMouseMove(),OnLBtnUp()或其中一个的主要实现代码写给小弟看看。感激不尽!!!!

解决方案 »

  1.   

    我实现了一个拖动自画的文本的动作:
    void CToolWin::OnLButtonDown(UINT nFlags, CPoint point)
    {
    if(CurPointInTextRegion(point.x,point.y))//判断是否鼠标选择了指定的区域
    {
    SelecteText(RGB(155,155,155));//选中文本,给文本框画8个矩形,你可能不需要
    DrawSelectPoint();
    m_bTextSelected = TRUE;//标注文本选择上
    CTextDataSource textDataSource;//这个类是自定义的
    textDataSource.DoDragDrop(); //启动拖动
    }
    CDialog::OnLButtonDown(nFlags, point);
    }实现 LRESULT CToolWin::OnDragOverEx( WPARAM pDropInfoClass, LPARAM lParam)
    这个目的是在拖动的时候画一个矩形来标主你拖动的位置,
    在OnDragDrop事件中将你的图形在当前区域从新画一遍首先你的记住你要拖动的图形的外围区域的大小,以及开始位置,到新的地方,按照新的坐标从新计算一边,然后重画