已经实现 单个控件拖动,但不知道怎样 同时 拖动多个控件:
OnLButtonDown(UINT nFlags, CPoint point)中:
if(bIsLShiftKey == TRUE)
{
ptPut = point;
ClientToScreen(&ptPut);
CRect rect1;
for(int i=0;i<m_nNum;i++) //遍历位图控件
{
GetDlgItem(BmpID[i])->GetWindowRect(rect1);
if(rect1.PtInRect(ptPut))
{
rectPic = rect1;
nID = BmpID[i];
break;
}
} if(rectPic.PtInRect(ptPut)) //判断定鼠标点 是否在位图区域内
{
BtDownX = ptPut.x;
BtDownY = ptPut.y;
CBitmap bitmapTemp, *pOldBitmap;
CDC *pDC = GetDlgItem(nID)->GetDC(), *pMemDC = new CDC;
bitmapTemp.CreateCompatibleBitmap(pDC, rectPic.Width(), rectPic.Height());
pMemDC->CreateCompatibleDC(pDC);
pOldBitmap = pMemDC->SelectObject(&bitmapTemp);
pMemDC->BitBlt(0,0, rectPic.Width(), rectPic.Height(), pDC, 0, 0, SRCCOPY); pMemDC->SelectObject(pOldBitmap);
delete pMemDC;
ReleaseDC(pDC); m_bIsLButtonDown = TRUE; m_ptOffset.x = ptPut.x-rectPic.left;
m_ptOffset.y = ptPut.y-rectPic.top; m_imgDrag.DeleteImageList();
m_imgDrag.Create(rectPic.Width(), rectPic.Height(), ILC_COLOR32|ILC_MASK, 0, 1);
m_imgDrag.Add(&bitmapTemp, RGB(0, 0, 0)); m_imgDrag.BeginDrag(0, m_ptOffset);
m_imgDrag.DragEnter(NULL, ptPut); SetCapture();
}
}
OnLButtonDown(UINT nFlags, CPoint point)中:
if(bIsLShiftKey == TRUE)
{
ptPut = point;
ClientToScreen(&ptPut);
CRect rect1;
for(int i=0;i<m_nNum;i++) //遍历位图控件
{
GetDlgItem(BmpID[i])->GetWindowRect(rect1);
if(rect1.PtInRect(ptPut))
{
rectPic = rect1;
nID = BmpID[i];
break;
}
} if(rectPic.PtInRect(ptPut)) //判断定鼠标点 是否在位图区域内
{
BtDownX = ptPut.x;
BtDownY = ptPut.y;
CBitmap bitmapTemp, *pOldBitmap;
CDC *pDC = GetDlgItem(nID)->GetDC(), *pMemDC = new CDC;
bitmapTemp.CreateCompatibleBitmap(pDC, rectPic.Width(), rectPic.Height());
pMemDC->CreateCompatibleDC(pDC);
pOldBitmap = pMemDC->SelectObject(&bitmapTemp);
pMemDC->BitBlt(0,0, rectPic.Width(), rectPic.Height(), pDC, 0, 0, SRCCOPY); pMemDC->SelectObject(pOldBitmap);
delete pMemDC;
ReleaseDC(pDC); m_bIsLButtonDown = TRUE; m_ptOffset.x = ptPut.x-rectPic.left;
m_ptOffset.y = ptPut.y-rectPic.top; m_imgDrag.DeleteImageList();
m_imgDrag.Create(rectPic.Width(), rectPic.Height(), ILC_COLOR32|ILC_MASK, 0, 1);
m_imgDrag.Add(&bitmapTemp, RGB(0, 0, 0)); m_imgDrag.BeginDrag(0, m_ptOffset);
m_imgDrag.DragEnter(NULL, ptPut); SetCapture();
}
}
http://blog.csdn.net/rbagglo/article/details/3856669
http://www.codeproject.com/Articles/1679/A-Multiple-Selection-based-Control-Tracker
想实现 拖动该区域,选中的 多个STATIC控件 跟随拖动。