void CFormViewShellDoc::Serialize(CArchive& ar)
{
	CString execArg;

	CFrameWnd * pWnd = (CFrameWnd*)AfxGetMainWnd();
	if(pWnd == NULL)
		return;

	CFormViewShellView* pView = (CFormViewShellView*)pWnd->GetActiveView();

	if (ar.IsStoring())
	{
		// TODO: 여기에 저장 코드를 추가합니다.
		
		pView->GetDlgItemText(IDC_EDIT3, execArg);
		ar << execArg;
		pView->GetDlgItemText(IDC_EXEC_FILE, execArg);
		ar << execArg;
		pView->GetDlgItemText(IDC_SRC_FILE, execArg);
		ar << execArg;
		pView->GetDlgItemText(IDC_PATH, execArg);
		ar << execArg;
		pView->GetDlgItemText(IDC_EDIT4, execArg);
		ar << execArg;


		ar << pView->m_ExecFileName;
		ar << pView->m_PreCmdOptStr;
		int lbCnt = pView->m_ListBox_Out.GetCount();
		ar << lbCnt;
		for(int lbIndex = 0; lbIndex < lbCnt; lbIndex++)
		{
			pView->m_ListBox_Out.GetText(lbIndex, execArg);
			ar << execArg;
		}
		
		ar << pView->m_Check_EnableErrPop.GetCheck();
//ITEMIDLIST t = pView->m_InputPathiIdList;
//		ar << pView->m_InputPathiIdList;
//		ar << pView->m_OutputPathiIdList;

		pView->GetDlgItemText(IDC_EDIT6, execArg);
		ar << execArg;
		pView->GetDlgItemText(IDC_EDIT7, execArg);
		ar << execArg;
		pView->GetDlgItemText(IDC_EDIT8, execArg);
		ar << execArg;
		
		int lbExFolderCnt = pView->m_ExFolderListBox.GetCount();
		ar << lbExFolderCnt;
		for(int lbIndex = 0; lbIndex < lbExFolderCnt; lbIndex++)
		{
			pView->m_ExFolderListBox.GetText(lbIndex, execArg);
			ar << execArg;
		}

		// 멀티커맨드라인 강제 딜레이
		pView->GetDlgItemText(IDC_EDIT_DELAY_TIME, execArg);
		ar << execArg;


		// 멀티커맨드라인 경로 저장
		int lbTclFilesCnt = pView->m_TclFilesListBox.GetCount();
		ar << lbTclFilesCnt;
		for(int lbIndex = 0; lbIndex < lbTclFilesCnt; lbIndex++)
		{
			//pView->m_SettingFilePath = ar.m_strFileName;
			CString tempFilePath = ar.m_strFileName;

			int i = tempFilePath.ReverseFind('\\');//실행 파일 이름을 지우기 위해서 왼쪽에 있는 '/'를 찾는다.
			CString currPath = tempFilePath.Right(tempFilePath.GetLength() - i);
			tempFilePath = m_tclFilePath + currPath;
			
			pView->m_TclFilesListBox.GetText(lbIndex, execArg);
			i = execArg.ReverseFind('\\');//실행 파일 이름을 지우기 위해서 왼쪽에 있는 '/'를 찾는다.
			execArg = execArg.Right(execArg.GetLength() - i);// 파일이름과 확장자만 얻는다.
			execArg = m_tclFilePath + execArg;

			ar << execArg;

			// 다중 쉘API 호출시 창 확대
			((CMainFrame*)(pWnd->GetActiveFrame()))->SetWindowPos(NULL,0,0,1300,700,SWP_NOMOVE);
		}
		// 멀티커맨드라인 체그박스저장
		for(int lbIndex = 0; lbIndex < lbTclFilesCnt; lbIndex++)
		{
			ar << pView->m_TclFilesListBox.GetCheck(lbIndex);;
		}
		// 멀티커맨드라인라면 생략
		if(lbTclFilesCnt){
			// mtcl 창닫기
			ar << pView->m_MTCL_ExitCheckBox.GetCheck();
		}else{
			// 하위폴더 검색 유무
			ar << pView->m_ChkSubFolder.GetCheck();
			// 결과리스트 보기 유무
			ar << pView->m_ViewList.GetCheck();
			// 빈폴더 제거 유무
			ar << pView->m_EmptyFolderCheck.GetCheck();
			// stcl 창닫기
			ar << pView->m_ExitCheckBox.GetCheck();
		}
		//===================== 저장할 데이터를 이하에 구현=====================
	}
	else
	{
		// TODO: 여기에 로딩 코드를 추가합니다.

		BOOL isEmpty = ar.IsBufferEmpty();
		BOOL isMultiCommand = !(ar.m_strFileName.Right(5)).Compare(".mtcl");

		pView->m_FirstLoaded = FALSE;
		ar >> execArg;
		pView->SetDlgItemText(IDC_EDIT3, execArg);
		ar >> execArg;
		pView->SetDlgItemText(IDC_EXEC_FILE, execArg);
		ar >> execArg;
		pView->SetDlgItemText(IDC_SRC_FILE, execArg);
		ar >> execArg;
		pView->SetDlgItemText(IDC_PATH, execArg);
		ar >> execArg;
		pView->SetDlgItemText(IDC_EDIT4, execArg);


		/*if(!execArg.IsEmpty())
			pView->m_ExtName.SetCheck(TRUE);
		else
			pView->m_ExtName.SetCheck(FALSE);
		*/
		ar >> pView->m_ExecFileName;
		ar >> pView->m_PreCmdOptStr;
		
		int lbCnt = 0;
		
		ar >> lbCnt;
		pView->m_ListBox_Out.ResetContent();
		for(int lbIndex = 0; lbIndex < lbCnt; lbIndex++)
		{
			ar >> execArg;
			pView->m_ListBox_Out.AddString(execArg);
			
		}
		
		pView->SetDlgItemText(IDC_EDIT5, pView->m_PreCmdOptStr);

		pView->DisplayCommand(FALSE);

		pView->m_FirstLoaded = TRUE;
		
		int nCheck = 0;
		ar >> nCheck;
		pView->m_Check_EnableErrPop.SetCheck(nCheck);
		
		pView->SetDlgItemText(IDC_EDIT6, "");
		if(!ar.IsBufferEmpty())
		{	
			ar >> execArg;
			pView->SetDlgItemText(IDC_EDIT6, execArg);
		}
		
		pView->SetDlgItemText(IDC_EDIT7, "");
		if(!ar.IsBufferEmpty())
		{	
			ar >> execArg;
			pView->SetDlgItemText(IDC_EDIT7, execArg);
		}