void CShellBrowser::DragStarted(int iFirstItem,POINT *ptCursor) { DraggedFile_t df; int iSelected = -1; if(iFirstItem != -1) { POINT ptOrigin; POINT ptItem; ListView_GetItemPosition(m_hListView,iFirstItem,&ptItem); ListView_GetOrigin(m_hListView,&ptOrigin); m_ptDraggedOffset.x = ptOrigin.x + ptCursor->x - ptItem.x; m_ptDraggedOffset.y = ptOrigin.y + ptCursor->y - ptItem.y; } while((iSelected = ListView_GetNextItem(m_hListView,iSelected,LVNI_SELECTED)) != -1) { QueryDisplayName(iSelected, SIZEOF_ARRAY(df.szFileName), df.szFileName); m_DraggedFilesList.push_back(df); } m_bDragging = TRUE; }
void VDUIJobControlDialog::OnJobQueueReloaded() { HWND hwndItem = GetDlgItem(mhdlg, IDC_JOBS); if (!hwndItem) return; POINT pt={0,0}; ListView_GetOrigin(hwndItem, &pt); int selindex = ListView_GetNextItem(hwndItem, -1, LVNI_ALL | LVNI_SELECTED); int newselindex = -1; if (selindex >= 0) { VDJob *vdj = g_VDJobQueue.ListGet(selindex); if (vdj) { uint64 selid = vdj->mId; newselindex = g_VDJobQueue.GetJobIndexById(selid); } } ListView_DeleteAllItems(hwndItem); int n = g_VDJobQueue.ListSize(); for(int i=0; i<n; i++) { LVITEM li; li.mask = LVIF_TEXT; li.iSubItem = 0; li.iItem = i; li.pszText = LPSTR_TEXTCALLBACK; ListView_InsertItem(hwndItem, &li); } if (newselindex >= 0) ListView_SetItemState(hwndItem, newselindex, LVIS_SELECTED, LVIS_SELECTED); ListView_Scroll(hwndItem, 0, -pt.y); UpdateSelectedJobEnables(NULL); }