📄 mpdfiletransferdlg.cpp
字号:
} } } else { CString str; if (ret_val == -1) str.Format("Connect to %s failed", m_host1, ret_val); else { char pszStr1[50], pszStr[256]; sprintf(pszStr1, "Connect to %s failed:\r\n", m_host1); Translate_Error(ret_val, pszStr, pszStr1); str = pszStr; } MessageBox(str); } SetCursor(hOldCursor);}void CMPDFileTransferDlg::OnConnect2Btn() { int ret_val; UpdateData(); if (m_bfd2 != BFD_INVALID_SOCKET) { WriteString(m_bfd2, "done"); easy_closesocket(m_bfd2); } if (m_host2.GetLength() == 0) { m_tree2.DeleteAllItems(); return; } if (m_bNeedPassword2) { CPasswordDialog dlg; dlg.DoModal(); if (dlg.m_bUseDefault) strcpy(m_pszPhrase2, MPD_DEFAULT_PASSPHRASE); else strcpy(m_pszPhrase2, dlg.m_phrase); } if (m_bNeedAccount2) { CAccountPasswordDlg dlg; dlg.m_host = m_host2; if (dlg.DoModal() == IDCANCEL) { return; } strcpy(m_pszAccount2, dlg.m_account.GetBuffer(0)); strcpy(m_pszPassword2, dlg.m_password.GetBuffer(0)); m_bNeedAccount2 = false; } HCURSOR hOldCursor = SetCursor( LoadCursor(NULL, IDC_WAIT) ); ret_val = ConnectToMPD(m_host2.GetBuffer(0), m_nPort2, m_pszPhrase2, &m_bfd2); if (ret_val == 0) { int i; int nFolders, nFiles; char pszStr[256], pszFile[256], pszLength[50]; char *pszEncoded; m_tree2.DeleteAllItems(); pszEncoded = EncodePassword(m_pszPassword2); sprintf(pszStr, "fileinit account=%s password=%s", m_pszAccount2, pszEncoded); if (pszEncoded != NULL) free(pszEncoded); WriteString(m_bfd2, pszStr); sprintf(pszStr, "getdir path=%s\\", m_pszRoot2); WriteString(m_bfd2, pszStr); ReadString(m_bfd2, pszStr); if (strnicmp(pszStr, "ERROR", 5) == 0) { strcat(pszStr, "\r\n"); strcat(pszStr, m_pszRoot2); MessageBox(pszStr); } else { HTREEITEM pItem, hItem; pItem = m_tree2.InsertItem(m_pszRoot2, 0, 2, TVI_ROOT, TVI_LAST); m_tree2.SetItemData(pItem, TREE_FOLDER_OPENED); nFolders = atoi(pszStr); for (i=0; i<nFolders; i++) { ReadString(m_bfd2, pszStr); hItem = m_tree2.InsertItem(pszStr, 0, 2, pItem, TVI_LAST); m_tree2.SetItemData(hItem, TREE_FOLDER_UNOPENED); m_tree2.InsertItem(".", 1, 1, hItem, TVI_LAST); } ReadString(m_bfd2, pszStr); nFiles = atoi(pszStr); for (i=0; i<nFiles; i++) { ReadString(m_bfd2, pszFile); ReadString(m_bfd2, pszLength); sprintf(pszStr, "%s %s", pszFile, pszLength); hItem = m_tree2.InsertItem(pszStr, 1, 1, pItem, TVI_LAST); m_tree2.SetItemData(hItem, TREE_FILE); } } } else { CString str; if (ret_val == -1) str.Format("Connect to %s failed", m_host2, ret_val); else { char pszStr1[50], pszStr[256]; sprintf(pszStr1, "Connect to %s failed:\r\n", m_host2); Translate_Error(ret_val, pszStr, pszStr1); str = pszStr; } MessageBox(str); } SetCursor(hOldCursor);}void CMPDFileTransferDlg::OnFileConnect() { CAdvancedConnectDialog dlg; UpdateData(); dlg.m_account1 = m_pszAccount1; dlg.m_host1 = m_host1; dlg.m_password1 = m_pszPassword1; dlg.m_phrase1 = m_pszPhrase1; dlg.m_port1 = m_nPort1; dlg.m_root1 = m_pszRoot1; dlg.m_account2 = m_pszAccount2; dlg.m_host2 = m_host2; dlg.m_password2 = m_pszPassword2; dlg.m_phrase2 = m_pszPhrase2; dlg.m_port2 = m_nPort2; dlg.m_root2 = m_pszRoot2; if (dlg.DoModal() == IDOK) { strcpy(m_pszAccount1, dlg.m_account1.GetBuffer(0)); m_host1 = dlg.m_host1; strcpy(m_pszPassword1, dlg.m_password1.GetBuffer(0)); strcpy(m_pszPhrase1, dlg.m_phrase1.GetBuffer(0)); m_nPort1 = dlg.m_port1; strcpy(m_pszRoot1, dlg.m_root1.GetBuffer(0)); if (m_pszRoot1[strlen(m_pszRoot1)-1] == '\\') m_pszRoot1[strlen(m_pszRoot1)-1] = '\0'; strcpy(m_pszAccount2, dlg.m_account2.GetBuffer(0)); m_host2 = dlg.m_host2; strcpy(m_pszPassword2, dlg.m_password2.GetBuffer(0)); strcpy(m_pszPhrase2, dlg.m_phrase2.GetBuffer(0)); m_nPort2 = dlg.m_port2; strcpy(m_pszRoot2, dlg.m_root2.GetBuffer(0)); if (m_pszRoot2[strlen(m_pszRoot2)-1] == '\\') m_pszRoot2[strlen(m_pszRoot2)-1] = '\0'; m_bNeedAccount1 = false; m_bNeedAccount2 = false; UpdateData(FALSE); OnConnect1Btn(); OnConnect2Btn(); }}void CMPDFileTransferDlg::OnFileExit() { PostMessage(WM_CLOSE);}CString GetPathFromItem(CTreeCtrl &tree, HTREEITEM hItem);/*{ CString str; HTREEITEM hParent; if (hItem == NULL) return CString(""); str = tree.GetItemText(hItem); hParent = tree.GetNextItem(hItem, TVGN_PARENT); return (GetPathFromItem(tree, hParent) + str + "\\");}*/void CMPDFileTransferDlg::OnItemexpandingTree1(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; int i, nFolders, nFiles; char pszStr[MAX_PATH], pszFile[100], pszLength[50]; DWORD dwData; HTREEITEM hChildItem; HTREEITEM hItem = pNMTreeView->itemNew.hItem; HTREEITEM hItemOld = pNMTreeView->itemOld.hItem; CString str; if (hItem != NULL) { dwData = m_tree1.GetItemData(hItem); if (dwData == TREE_FOLDER_UNOPENED) { HCURSOR hOldCursor = SetCursor( LoadCursor(NULL, IDC_WAIT) ); hChildItem = m_tree1.GetChildItem(hItem); m_tree1.DeleteItem(hChildItem); m_tree1.SetItemData(hItem, TREE_FOLDER_OPENED); str = GetPathFromItem(m_tree1, hItem); sprintf(pszStr, "getdir path=%s", str.GetBuffer(0)); WriteString(m_bfd1, pszStr); ReadString(m_bfd1, pszStr); if (strnicmp(pszStr, "ERROR", 5) == 0) { MessageBox(pszStr); } else { nFolders = atoi(pszStr); m_folder_progress1.SetRange(0, nFolders); m_folder_progress1.SetStep(1); m_folder_progress1.SetPos(0); if (nFolders == 0) m_folder_progress1.StepIt(); for (i=0; i<nFolders; i++) { ReadString(m_bfd1, pszStr); hChildItem = m_tree1.InsertItem(pszStr, 0, 2, hItem, TVI_LAST); m_tree1.SetItemData(hChildItem, TREE_FOLDER_UNOPENED); m_tree1.InsertItem(".", 1, 1, hChildItem, TVI_LAST); m_folder_progress1.StepIt(); } ReadString(m_bfd1, pszStr); nFiles = atoi(pszStr); m_file_progress1.SetRange(0, nFiles); m_file_progress1.SetStep(1); m_file_progress1.SetPos(0); for (i=0; i<nFiles; i++) { ReadString(m_bfd1, pszFile); ReadString(m_bfd1, pszLength); sprintf(pszStr, "%s %s", pszFile, pszLength); hChildItem = m_tree1.InsertItem(pszStr, 1, 1, hItem, TVI_LAST); m_tree1.SetItemData(hChildItem, TREE_FILE); m_file_progress1.StepIt(); } m_folder_progress1.SetPos(0); m_file_progress1.SetPos(0); } SetCursor(hOldCursor); } } *pResult = 0;}void CMPDFileTransferDlg::OnItemexpandingTree2(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; int i, nFolders, nFiles; char pszStr[MAX_PATH], pszFile[100], pszLength[50]; DWORD dwData; HTREEITEM hChildItem; HTREEITEM hItem = pNMTreeView->itemNew.hItem; CString str; if (hItem != NULL) { dwData = m_tree2.GetItemData(hItem); if (dwData == TREE_FOLDER_UNOPENED) { HCURSOR hOldCursor = SetCursor( LoadCursor(NULL, IDC_WAIT) ); hChildItem = m_tree2.GetChildItem(hItem); m_tree2.DeleteItem(hChildItem); m_tree2.SetItemData(hItem, TREE_FOLDER_OPENED); str = GetPathFromItem(m_tree2, hItem); sprintf(pszStr, "getdir path=%s", str.GetBuffer(0)); WriteString(m_bfd2, pszStr); ReadString(m_bfd2, pszStr); if (strnicmp(pszStr, "ERROR", 5) == 0) { MessageBox(pszStr); } else { nFolders = atoi(pszStr); m_folder_progress2.SetRange(0, nFolders); m_folder_progress2.SetStep(1); m_folder_progress2.SetPos(0); if (nFolders == 0) m_folder_progress2.StepIt(); for (i=0; i<nFolders; i++) { ReadString(m_bfd2, pszStr); hChildItem = m_tree2.InsertItem(pszStr, 0, 2, hItem, TVI_LAST); m_tree2.SetItemData(hChildItem, TREE_FOLDER_UNOPENED); m_tree2.InsertItem(".", 1, 1, hChildItem, TVI_LAST); m_folder_progress2.StepIt(); } ReadString(m_bfd2, pszStr); nFiles = atoi(pszStr); m_file_progress2.SetRange(0, nFiles); m_file_progress2.SetStep(1); m_file_progress2.SetPos(0); for (i=0; i<nFiles; i++) { ReadString(m_bfd2, pszFile); ReadString(m_bfd2, pszLength); sprintf(pszStr, "%s %s", pszFile, pszLength); hChildItem = m_tree2.InsertItem(pszStr, 1, 1, hItem, TVI_LAST); m_tree2.SetItemData(hChildItem, TREE_FILE); m_file_progress2.StepIt(); } m_folder_progress2.SetPos(0); m_file_progress2.SetPos(0); } SetCursor(hOldCursor); } } *pResult = 0;}void CMPDFileTransferDlg::OnBegindragTree2(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0; //CString str; //str = GetPathFromItem(m_tree2, pNMTreeView->itemNew.hItem); m_hDragItem = pNMTreeView->itemNew.hItem; if (m_tree2.GetItemData(pNMTreeView->itemNew.hItem) == TREE_FILE) m_dragState = DRAGGING_RIGHT_FILE; else m_dragState = DRAGGING_RIGHT_FOLDER; m_DropTarget2.m_pDlg = this; m_DropTarget1.m_pDlg = this; //m_tree2.SelectItem(pNMTreeView->itemNew.hItem); COleDataSource *pOleSource = new COleDataSource ; // Begin Drag operation DROPEFFECT dropeffect = pOleSource->DoDragDrop(); // Remove the highlighting //SendMessage(TVM_SELECTITEM, TVGN_DROPHILITE,0); // If user is moving item by pressing Shift, delete selected item //if ( dropeffect == DROPEFFECT_MOVE) DeleteItem(hTSelItem); delete pOleSource;}void CMPDFileTransferDlg::OnBegindragTree1(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; *pResult = 0; //CString str; //str = GetPathFromItem(m_tree1, pNMTreeView->itemNew.hItem); m_hDragItem = pNMTreeView->itemNew.hItem; if (m_tree1.GetItemData(pNMTreeView->itemNew.hItem) == TREE_FILE) m_dragState = DRAGGING_LEFT_FILE; else m_dragState = DRAGGING_LEFT_FOLDER; m_DropTarget1.m_pDlg = this; m_DropTarget2.m_pDlg = this; //m_tree1.SelectItem(pNMTreeView->itemNew.hItem); COleDataSource *pOleSource = new COleDataSource ; // Begin Drag operation DROPEFFECT dropeffect = pOleSource->DoDragDrop(); // Remove the highlighting //SendMessage(TVM_SELECTITEM, TVGN_DROPHILITE,0); // If user is moving item by pressing Shift, delete selected item //if ( dropeffect == DROPEFFECT_MOVE) DeleteItem(hTSelItem); delete pOleSource;}/*void CMPDFileTransferDlg::OnTimer(UINT nIDEvent) { if (nIDEvent == m_nTimerId) //if (nIDEvent == 123) { KillTimer(m_nTimerId); //KillTimer(123); m_nTimerId = 0; if (m_pTimerTree != NULL) { m_pTimerTree->Expand(m_hTimerItem, TVE_EXPAND); m_pTimerTree->SelectDropTarget(m_hTimerItem); } m_pTimerTree = NULL; m_hTimerItem = NULL; } else { CString str; str.Format("id: %d", nIDEvent); MessageBox(str); } CDialog::OnTimer(nIDEvent);}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -