リストビューのドラッグ&ドロップで複数行のイメージをつくる


もんがあ  2006-04-07 05:52:50  No: 61150  IP: 192.*.*.*

WinXP .NET MFC です。

リストビューのドラッグ&ドロップで、マウスポインタの下に移動させるテキストのイメージを表示させようと思いました。

1行だけのドラッグ&ドロップであれば、下記コードでうまくいくのですが、m_pDragImage に複数行を収納させることができません。

アドバイスをお願いいたします。

(各変数の宣言は省略しました。ソースファイルは、CListCtrlのサブクラスです)

void CmyListCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
        iLow = HitTest(point); 

        CListCtrl::OnLButtonDown(nFlags, point);
}

void CmyListCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
                if (m_bDrag)
                {
                        POINT pt = point;
                        ClientToScreen( &pt );
                        CImageList::DragMove(pt);
                }

        CListCtrl::OnMouseMove(nFlags, point);
}

void CmyListCtrl::OnLvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
{
        LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

        if( !(m_pDragImage = CreateDragImage(iLow, &pPoint)) )
        {
                return;
        }
        m_bDrag = TRUE;
        m_pDragImage->BeginDrag(0, CPoint(0, 0));
        ClientToScreen( &pPoint );
        m_pDragImage->DragEnter(NULL, pPoint);
        SetCapture();

        *pResult = 0;
}

編集 削除