VC++ 视图\\文档编程的问题
我的参考书有这么一个程序:但是有些问题想不明白,请教一下各位!(问题在图片上)实现视图窗口中数据拖动
*****************************************
头文件声明变量:
int
m_ItmIndex;
CImageList* m_pDrgImg;
BOOL m_Drag;
以下对应声明:
void CDragViewView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl* pListCtl=&GetListCtrl();
pListCtl->ModifyStyle(0L,LVS_REPORT);
pListCtl->SetExtendedStyle(LVS_EX_FLATSB
|LVS_EX_FULLROWSELECT
|LVS_EX_HEADERDRAGDROP
|LVS_EX_ONECLICKACTIVATE
|LVS_EX_GRIDLINES);
pListCtl->InsertColumn(0,"员工编号",LVCFMT_LEFT,100);
pListCtl->InsertColumn(1,"员工姓名",LVCFMT_LEFT,100);
pListCtl->InsertColumn(2,"文化程度",LVCFMT_LEFT,100);
pListCtl->InsertItem(0,"0001");
pListCtl->SetItemText(0,1,"赵一");
pListCtl->SetItemText(0,2,"专科");
pListCtl->InsertItem(1,"0002");
pListCtl->SetItemText(1,1,"钱二");
pListCtl->SetItemText(1,2,"本科");
pListCtl->InsertItem(2,"0003");
pListCtl->SetItemText(2,1,"孙三");
pListCtl->SetItemText(2,2,"研究生");
}
void CDragViewView::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
POINT pt;
m_ItmIndex = ((NM_LISTVIEW *)pNMHDR)->iItem;
int pos
= GetListCtrl().GetSelectionMark();
m_pDrgImg = GetListCtrl().CreateDragImage(m_ItmIndex,&pt);
m_pDrgImg->BeginDrag(0,pt);
m_pDrgImg->DragEnter(this,pt);
m_Drag = TRUE;
*pResult = 0;
}
void CDragViewView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_Drag)
{
CPoint pt;
pt.x = point.x;
pt.y = point.y + (m_ItmIndex + 1) * 15;
m_pDrgImg->DragMove(pt);
}
CListView::OnMouseMove(nFlags, point);
}
void CDragViewView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_Drag)
{
m_pDrgImg->EndDrag();
m_Drag = FALSE;
char name[256];
LV_ITEM lvi;
CString subitem[3];
for(int i=2;i>=0;i--)
{
ZeroMemory(&lvi,sizeof(LV_ITEM));
lvi.iItem = m_ItmIndex;
lvi.iSubItem = i;
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.pszText = name;
lvi.cchTextMax = 255;
GetListCtrl().GetItem(&lvi);
subitem[i].Format("%s",name);
}
GetListCtrl().InsertItem(&lvi);
GetListCtrl().SetItemText(m_ItmIndex,1,subitem[1]);
GetListCtrl().SetItemText(m_ItmIndex,2,subitem[2]);
}
CListView::OnLButtonUp(nFlags, point);
}
****************************************************************************
以下有几个问题请高手解答........请看图片(放大看)
问题写在图片上,先谢谢高手!!