📄 send_to_hd.c
字号:
EndDialog(hWnd,TRUE); return TRUE; } break; case WM_CLOSE: EndDialog(hWnd,FALSE); return FALSE; } return FALSE;}void UpdateDestFolder(void){ char s[MAX_PATH]; ZeroMemory(szDestFolder,MAX_PATH); ZeroMemory(s,MAX_PATH); DoCheckCommand(); if(szRunCommand[0]=='\0' && (GetFileAttributes(szSourceFile)&FILE_ATTRIBUTE_DIRECTORY)) wsprintf(szDestFolder,szSourceFile); else GetPathFromFileName(szSourceFile,szDestFolder); GetOnlyFilename(szDestFolder,s,SZ_LONGNAME); if(s[1]==':') wsprintf(s,"\0"); RestoreCheckCommand(); if((strlen(szFoldername)+strlen(s))>=MAX_PATH) s[MAX_PATH-strlen(szFoldername)]='\0'; wsprintf(szDestFolder,szFoldername); if(szFoldername[3]=='\0') //like c:\,so cut the "\" szDestFolder[2]='\0'; strcat(szDestFolder,"\\"); strcat(szDestFolder,s);}int DelFile(LPSTR szfile){ if((GetFileAttributes(szfile)&FILE_ATTRIBUTE_DIRECTORY)) { SHFILEOPSTRUCT shop; shop.hwnd=hMainWnd; shop.wFunc=FO_DELETE; shop.pTo=NULL;//szFoldername; if(bDelNoAsk) shop.fFlags=FOF_NOCONFIRMATION; else shop.fFlags=FOF_ALLOWUNDO; shop.fAnyOperationsAborted=FALSE; shop.hNameMappings=NULL; shop.lpszProgressTitle=NULL; shop.pFrom=szfile; SHFileOperation(&shop); return TRUE; } else if(!bDelNoAsk) { char mg[MAX_PATH]; wsprintf(mg,"确实要删除文件\"%s\"吗?",szfile); switch(MessageBox(GetFocus(),mg,"删除",MB_YESNOCANCEL | MB_ICONQUESTION)) { case IDYES: SetFileAttributes(szfile,FILE_ATTRIBUTE_NORMAL); return DeleteFile(szfile); case IDNO: return FALSE; case IDCANCEL: return DEL_CANCEL; } } SetFileAttributes(szfile,FILE_ATTRIBUTE_NORMAL); return DeleteFile(szfile);}#pragma argsusedBOOL CALLBACK WINAPI SendProc(HWND hWnd,UINT uMsg,UINT wParam,LONG lParam){ switch(uMsg) { case WM_INITDIALOG: hExternWnd=hWnd; hTypeWnd=GetDlgItem(hWnd,IDC_FILETYPE); if(dofileop.uOp==FO_MOVE) CheckDlgButton(hWnd,IDC_MOVE,BST_CHECKED); else CheckDlgButton(hWnd,IDC_MOVE,BST_UNCHECKED); if(dofileop.bUpdate) CheckDlgButton(hWnd,IDC_UPDATE,BST_CHECKED); else CheckDlgButton(hWnd,IDC_UPDATE,BST_UNCHECKED); if(dofileop.bNoFolder) CheckDlgButton(hWnd,IDC_NOFOLDER,BST_CHECKED); else CheckDlgButton(hWnd,IDC_NOFOLDER,BST_UNCHECKED); UpdateDestFolder(); if(dofileop.bNoFolder) SetDlgItemText(hWnd,IDC_DESTFOLDER,szFoldername); else SetDlgItemText(hWnd,IDC_DESTFOLDER,szDestFolder); PostMessage(hWnd,MYWM_ICON,0,0); break; case WM_LBUTTONDOWN: if(bInText) if(hBaseWnd!=NULL) { bInText=FALSE; SetFocus(hWnd); SetForegroundWindow(hBaseWnd); } break; case WM_SETCURSOR: if(bInText) SetCursor(LoadCursor(hInst,"IDC_HAND")); else SetCursor(LoadCursor(NULL,IDC_ARROW)); return TRUE; case WM_MOUSEMOVE: GetWindowRect(GetDlgItem(hWnd,IDC_CHANGDEST),&CDestRt); { POINT pt; GetCursorPos(&pt); if(pt.x>CDestRt.left && pt.x<CDestRt.right && pt.y>CDestRt.top && pt.y<CDestRt.bottom) { if(!bInText) { bInText=TRUE; SetDlgItemText(hWnd,IDC_CHANGDEST,"目的文件夹:"); } } else if(bInText) { bInText=FALSE; SetDlgItemText(hWnd,IDC_CHANGDEST,"目的文件夹:"); } } break; case WM_CTLCOLORSTATIC: SetBkColor((HDC)wParam,(COLORREF)(GetSysColor(COLOR_MENU))); if((HWND)lParam==GetDlgItem(hWnd,IDC_CHANGDEST)) if(!bInText) SetTextColor((HDC)wParam,0x00ff0000); else SetTextColor((HDC)wParam,(COLORREF)(GetSysColor(COLOR_HIGHLIGHT))); return (BOOL)GetStockObject(NULL_BRUSH); case MYWM_ICON: //该消息为临时借用,先显示对话框再完成最后的初始化 while(SendMessage(hTypeWnd,CB_GETCOUNT,0,0)>0) SendMessage(hTypeWnd,CB_DELETESTRING,0,0); ListView_DeleteAllItems(GetDlgItem(hWnd,IDC_SELECTSEND)); ImageList_Destroy(ListView_GetImageList(GetDlgItem(hWnd,IDC_SELECTSEND),LVSIL_STATE)); ListView_DeleteAllItems(GetDlgItem(hWnd,IDC_SELECTDEST)); ImageList_Destroy(ListView_GetImageList(GetDlgItem(hWnd,IDC_SELECTDEST),LVSIL_STATE)); FillList(hWnd); SendMessage(hTypeWnd,CB_ADDSTRING,0,(LPARAM)"*.*"); SendMessage(hTypeWnd,CB_SELECTSTRING,0,(LPARAM)"*.*"); ListView_SetCallbackMask(GetDlgItem(hWnd,IDC_SELECTSEND),LVIS_SELECTED); ListView_SetCallbackMask(GetDlgItem(hWnd,IDC_SELECTDEST),LVIS_SELECTED); break; case WM_NOTIFY: return NotifyHandler(hWnd, uMsg, wParam, lParam);
case WM_COMMAND:
switch(LOWORD(wParam)) { case IDOK: bInText=FALSE; DoSend(); hExternWnd=NULL; EndDialog(hWnd,TRUE); return TRUE; case IDCANCEL: bInText=FALSE; hExternWnd=NULL; EndDialog(hWnd,FALSE); return FALSE; case IDHELP: //"删除" { HWND hDest=GetDlgItem(hWnd,IDC_SELECTDEST); int i,k,j=ListView_GetItemCount(hDest),c=0,ch; if(j==0) break; if(DialogBox(hInst,MAKEINTRESOURCE(IDD_ASKDEL),hWnd,(DLGPROC)AskDelProc)) { char szd[MAX_PATH]; for(i=0;i<j;i++) { ListView_GetItemText(hDest,c,0,szd,MAX_PATH); if(szd[0]==' ') { for(k=0;k<(int)(strlen(szd)-1);k++) szd[k]=szd[k+1]; szd[k]='\0'; } ch=DelFile(szd); if(ch==DEL_CANCEL) break; else if(ch==FALSE) { c++; continue; } ListView_DeleteItem(hDest,c); } ListView_SetColumnWidth(hDest,0,LVSCW_AUTOSIZE); SendMessage(hWnd,MYWM_ICON,0,0); //SendMessage(hTypeWnd,CB_GETLBTEXT,SendMessage(hTypeWnd,CB_GETCURSEL,0,0),(LPARAM)szd); //ImageList_Destroy(ListView_GetImageList(GetDlgItem(hWnd,IDC_SELECTSEND),LVSIL_STATE)); //FillSend(GetDlgItem(hWnd,IDC_SELECTSEND),szd); } } break; case IDC_ADDSELECT: case IDC_DELSELECT: { int i,j; HWND hSel,hDest; char szd[MAX_PATH]; if(LOWORD(wParam)==IDC_ADDSELECT) { hSel=GetDlgItem(hWnd,IDC_SELECTSEND); hDest=GetDlgItem(hWnd,IDC_SELECTDEST); } else { hDest=GetDlgItem(hWnd,IDC_SELECTSEND); hSel=GetDlgItem(hWnd,IDC_SELECTDEST); } j=ListView_GetItemCount(hSel); for(i=0;i<j;i++) { if((ListView_GetItemState(hSel,i,LVIF_STATE)&LVIS_DROPHILITED)) { ListView_GetItemText(hSel,i,0,szd,MAX_PATH); AddListview(hDest,szd,ListView_GetItemCount(hDest)); ListView_DeleteItem(hSel,i); ListView_SetColumnWidth(hSel,0,LVSCW_AUTOSIZE); j--; i--; } } } break; case IDC_ADDALL: case IDC_DELALL: { int i,j; HWND hSel,hDest; char szd[MAX_PATH]; if(LOWORD(wParam)==IDC_ADDALL) { hSel=GetDlgItem(hWnd,IDC_SELECTSEND); hDest=GetDlgItem(hWnd,IDC_SELECTDEST); } else { hDest=GetDlgItem(hWnd,IDC_SELECTSEND); hSel=GetDlgItem(hWnd,IDC_SELECTDEST); } j=ListView_GetItemCount(hSel); for(i=0;i<j;i++) { ListView_GetItemText(hSel,0,0,szd,MAX_PATH); AddListview(hDest,szd,ListView_GetItemCount(hDest)); ListView_DeleteItem(hSel,0); ListView_SetColumnWidth(hSel,0,LVSCW_AUTOSIZE); } } break; case IDC_MOVE: if(IsDlgButtonChecked(hWnd,IDC_MOVE)==BST_CHECKED) { dofileop.uOp=FO_MOVE; if(hBaseWnd!=NULL) CheckDlgButton(hBaseWnd,IDC_MOVE,BST_CHECKED); } else { dofileop.uOp=FO_COPY; if(hBaseWnd!=NULL) CheckDlgButton(hBaseWnd,IDC_MOVE,BST_UNCHECKED); } break; case IDC_NOFOLDER: if(IsDlgButtonChecked(hWnd,IDC_NOFOLDER)==BST_CHECKED) { dofileop.bNoFolder=TRUE; if(hBaseWnd!=NULL) CheckDlgButton(hBaseWnd,IDC_NOFOLDER,BST_CHECKED); } else { dofileop.bNoFolder=FALSE; if(hBaseWnd!=NULL) CheckDlgButton(hBaseWnd,IDC_NOFOLDER,BST_UNCHECKED); } ShowWindow(GetDlgItem(hWnd,IDC_DESTFOLDER),SW_HIDE); SendMessage(hWnd,WM_COMMAND,MAKELONG((WORD)IDC_NEWFOLDER,(WORD)EN_CHANGE),0); ShowWindow(GetDlgItem(hWnd,IDC_DESTFOLDER),SW_SHOW); break; case IDC_UPDATE: if(IsDlgButtonChecked(hWnd,IDC_UPDATE)==BST_CHECKED) { dofileop.bUpdate=TRUE; if(hBaseWnd!=NULL) CheckDlgButton(hBaseWnd,IDC_UPDATE,BST_CHECKED); } else { dofileop.bUpdate=FALSE; if(hBaseWnd!=NULL) CheckDlgButton(hBaseWnd,IDC_UPDATE,BST_UNCHECKED); break; } if(!bNoMsg) if(!DialogBox(hInst,MAKEINTRESOURCE(IDD_MSG),hWnd,(DLGPROC)MsgProc)) { CheckDlgButton(hWnd,IDC_UPDATE,BST_UNCHECKED); if(hBaseWnd!=NULL) CheckDlgButton(hBaseWnd,IDC_UPDATE,BST_UNCHECKED); dofileop.bUpdate=FALSE; } break; } switch(HIWORD(wParam)) { case CBN_SELCHANGE: { char ext[80]; SendMessage(hTypeWnd,CB_GETLBTEXT,SendMessage(hTypeWnd,CB_GETCURSEL,0,0),(LPARAM)ext); ListView_DeleteAllItems(GetDlgItem(hWnd,IDC_SELECTSEND)); ImageList_Destroy(ListView_GetImageList(GetDlgItem(hWnd,IDC_SELECTSEND),LVSIL_STATE)); FillSend(GetDlgItem(hWnd,IDC_SELECTSEND),ext); } break; case EN_CHANGE: if((int)LOWORD(wParam)==IDC_NEWFOLDER) { char s[80]; int i; ZeroMemory(szShowDest,MAX_PATH); ZeroMemory(s,80); GetDlgItemText(hWnd,IDC_NEWFOLDER,s,80); for(i=0;i<80;i++) if(s[i]=='*' || s[i]=='?' || s[i]==':' || s[i]=='/' || s[i]=='"' || s[i]=='<' || s[i]=='>') { Errmsg("非法字符串"); s[i]='\0'; SetDlgItemText(hWnd,IDC_NEWFOLDER,s); break; } if(dofileop.bNoFolder) { if((strlen(szFoldername)+strlen(s))>=MAX_PATH) s[MAX_PATH-strlen(szFoldername)]='\0'; wsprintf(szShowDest,"%s\\%s",szFoldername,s); } else { if((strlen(szDestFolder)+strlen(s))>=MAX_PATH) s[MAX_PATH-strlen(szDestFolder)]='\0'; wsprintf(szShowDest,"%s\\%s",szDestFolder,s); } SetDlgItemText(hWnd,IDC_DESTFOLDER,szShowDest); } break; } break; case WM_CLOSE: bInText=FALSE; hExternWnd=NULL; EndDialog(hWnd,FALSE); return FALSE; } return FALSE;}void FillList(HWND hWnd){ int i=0; DoCheckCommand(); InitCol(GetDlgItem(hWnd,IDC_SELECTSEND)); //init listview column InitCol(GetDlgItem(hWnd,IDC_SELECTDEST)); ZeroMemory(szThisFolder,MAX_PATH); if(szRunCommand[0]=='\0') //仅一个目录或文件 { if((GetFileAttributes(szSourceFile)&FILE_ATTRIBUTE_DIRECTORY)) { wsprintf(szThisFolder,szSourceFile); if(szThisFolder[3]=='\0') szThisFolder[2]='\0'; FillSend(GetDlgItem(hWnd,IDC_SELECTSEND),NULL); wsprintf(szRunCommand,szForCheck); SetCurrentDirectory(szSourceFile); return; } } GetPathFromFileName(szSourceFile,szThisFolder); if(szThisFolder[2]=='\0') { szThisFolder[2]='\\';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -