⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpdfiletransferdlg.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	    }	}    }    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 + -