// FtpClientTesterDlg.cpp : ±¸Çö ÆÄÀÏ // #include "stdafx.h" #include "FtpClientTester.h" #include "FtpClientTesterDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // ÀÀ¿ë ÇÁ·Î±×·¥ Á¤º¸¿¡ »ç¿ëµÇ´Â CAboutDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù. class CAboutDlg : public CDialogEx { public: CAboutDlg(); // ´ëÈ­ »óÀÚ µ¥ÀÌÅÍÀÔ´Ï´Ù. enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV Áö¿øÀÔ´Ï´Ù. // ±¸ÇöÀÔ´Ï´Ù. protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CFtpClientTesterDlg ´ëÈ­ »óÀÚ CFtpClientTesterDlg::CFtpClientTesterDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CFtpClientTesterDlg::IDD, pParent) , m_strServerFolder(_T("LotHistory")) , m_strServerFile(_T("")) , m_strLocalFolder(_T("")) , m_strLocalFile(_T("")) , m_strSignalFolder(_T("LotHistory")) , m_strSignalFile(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CFtpClientTesterDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_SERVER_FOLDER, m_strServerFolder); DDX_Text(pDX, IDC_EDIT_SERVER_FILE, m_strServerFile); DDX_Text(pDX, IDC_EDIT_LOCAL_FOLDER, m_strLocalFolder); DDX_Text(pDX, IDC_EDIT_LOCAL_FILE, m_strLocalFile); DDX_Text(pDX, IDC_EDIT_SIGNAL_FOLDER, m_strSignalFolder); DDX_Text(pDX, IDC_EDIT_SIGNAL_FILE, m_strSignalFile); DDX_Control(pDX, IDC_CHECK_CREATE_SIGNAL, m_ctrlCreateSignal); DDX_Control(pDX, IDC_CHECK_RESULT_ACK, m_ctrlResultAck); } BEGIN_MESSAGE_MAP(CFtpClientTesterDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_DOWNLOAD, &CFtpClientTesterDlg::OnBnClickedButtonDownload) ON_WM_COPYDATA() ON_BN_CLICKED(IDC_BUTTON_UPLOAD, &CFtpClientTesterDlg::OnBnClickedButtonUpload) ON_BN_CLICKED(IDC_BUTTON_SERVER, &CFtpClientTesterDlg::OnBnClickedButtonServer) ON_BN_CLICKED(IDC_BUTTON_LOCAL, &CFtpClientTesterDlg::OnBnClickedButtonLocal) ON_BN_CLICKED(IDC_BUTTON_SIGNAL, &CFtpClientTesterDlg::OnBnClickedButtonSignal) END_MESSAGE_MAP() // CFtpClientTesterDlg ¸Þ½ÃÁö 󸮱â BOOL CFtpClientTesterDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // ½Ã½ºÅÛ ¸Þ´º¿¡ "Á¤º¸..." ¸Þ´º Ç׸ñÀ» Ãß°¡ÇÕ´Ï´Ù. // IDM_ABOUTBOX´Â ½Ã½ºÅÛ ¸í·É ¹üÀ§¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // ÀÌ ´ëÈ­ »óÀÚÀÇ ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢ÀÌ ´ëÈ­ »óÀÚ°¡ ¾Æ´Ò °æ¿ì¿¡´Â // ÇÁ·¹ÀÓ¿öÅ©°¡ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù. SetIcon(m_hIcon, TRUE); // Å« ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. SetIcon(m_hIcon, FALSE); // ÀÛÀº ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù. return TRUE; // Æ÷Ä¿½º¸¦ ÄÁÆ®·Ñ¿¡ ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é TRUE¸¦ ¹ÝȯÇÕ´Ï´Ù. } void CFtpClientTesterDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // ´ëÈ­ »óÀÚ¿¡ ÃÖ¼ÒÈ­ ´ÜÃ߸¦ Ãß°¡ÇÒ °æ¿ì ¾ÆÀÌÄÜÀ» ±×¸®·Á¸é // ¾Æ·¡ Äڵ尡 ÇÊ¿äÇÕ´Ï´Ù. ¹®¼­/ºä ¸ðµ¨À» »ç¿ëÇÏ´Â MFC ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °æ¿ì¿¡´Â // ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù. void CFtpClientTesterDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // ±×¸®±â¸¦ À§ÇÑ µð¹ÙÀ̽º ÄÁÅØ½ºÆ®ÀÔ´Ï´Ù. SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // Ŭ¶óÀÌ¾ðÆ® »ç°¢Çü¿¡¼­ ¾ÆÀÌÄÜÀ» °¡¿îµ¥¿¡ ¸ÂÃä´Ï´Ù. int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // ¾ÆÀÌÄÜÀ» ±×¸³´Ï´Ù. dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } // »ç¿ëÀÚ°¡ ÃÖ¼ÒÈ­µÈ âÀ» ²ô´Â µ¿¾È¿¡ Ä¿¼­°¡ Ç¥½ÃµÇµµ·Ï ½Ã½ºÅÛ¿¡¼­ // ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. HCURSOR CFtpClientTesterDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void CFtpClientTesterDlg::OnBnClickedButtonDownload() { UpdateData(TRUE); HWND hWnd = GetFTPUploaderWndHandle(); if (hWnd==NULL) { return; } CFTPCopyDataParam downParam; _stprintf_s(downParam.m_strServer_FolderName, m_strServerFolder); _stprintf_s(downParam.m_strServer_FileName, m_strServerFile); _stprintf_s(downParam.m_strLocal_FolderName, m_strLocalFolder); _stprintf_s(downParam.m_strLocal_FileName, m_strLocalFile); _stprintf_s(downParam.m_strServer_SignalFolderName, m_strSignalFolder); _stprintf_s(downParam.m_strServer_SignalFileName, m_strSignalFile); downParam.m_nCreateSignalFile = m_ctrlCreateSignal.GetCheck(); downParam.m_nSendResultCode = m_ctrlResultAck.GetCheck(); downParam.m_nProcessType = FTPProcessType_DownFile; COPYDATASTRUCT cds; cds.dwData = COPYDATA_RAW_DOWNLOAD; cds.cbData = sizeof(CFTPCopyDataParam); cds.lpData = &downParam; DWORD dwReturn = 0; if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE) { } m_vecFTPCopyDataParam.push_back(downParam); } void CFtpClientTesterDlg::OnBnClickedButtonUpload() { UpdateData(TRUE); HWND hWnd = GetFTPUploaderWndHandle(); if (hWnd==NULL) { return; } CFTPCopyDataParam upParam; _stprintf_s(upParam.m_strServer_FolderName, m_strServerFolder); _stprintf_s(upParam.m_strServer_FileName, m_strServerFile); _stprintf_s(upParam.m_strLocal_FolderName, m_strLocalFolder); _stprintf_s(upParam.m_strLocal_FileName, m_strLocalFile); _stprintf_s(upParam.m_strServer_SignalFolderName, m_strSignalFolder); _stprintf_s(upParam.m_strServer_SignalFileName, m_strSignalFile); upParam.m_nCreateSignalFile = m_ctrlCreateSignal.GetCheck(); upParam.m_nSendResultCode = m_ctrlResultAck.GetCheck(); upParam.m_nProcessType = FTPProcessType_UpFile; COPYDATASTRUCT cds; cds.dwData = COPYDATA_RAW_UPLOAD; cds.cbData = sizeof(CFTPCopyDataParam); cds.lpData = &upParam; DWORD dwReturn = 0; if(SendMessageTimeout(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds, SMTO_NORMAL, 20000, (PDWORD_PTR)(dwReturn)) == FALSE) { } m_vecFTPCopyDataParam.push_back(upParam); } BOOL CFtpClientTesterDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { switch( pCopyDataStruct->dwData ) { case COPYDATA_RAW_DOWNLOAD_ACK: { CFTPCopyDataParam* pParam = static_cast(pCopyDataStruct->lpData); ASSERT(pParam); AfxMessageBox(pParam->m_strLocal_FileName); } break; case COPYDATA_RAW_UPLOAD_ACK: { CFTPCopyDataParam* pParam = static_cast(pCopyDataStruct->lpData); ASSERT(pParam); AfxMessageBox(pParam->m_strLocal_FileName); } break; } return CDialogEx::OnCopyData(pWnd, pCopyDataStruct); } void CFtpClientTesterDlg::OnBnClickedButtonServer() { static TCHAR BASED_CODE szFilter[] = _T("¸ðµçÆÄÀÏ(*.*)|*.*||"); CFileDialog dlg(TRUE, _T("*.*"), _T("All Files"), OFN_HIDEREADONLY, szFilter); if(IDOK == dlg.DoModal()) { CString strValue = dlg.GetPathName(); int nIdx = strValue.ReverseFind(_T('\\')); int nLength = strValue.GetLength() - nIdx; m_strServerFolder = strValue.Left(nIdx); m_strServerFile = strValue.Mid(nIdx+1, nLength); } UpdateData(FALSE); } void CFtpClientTesterDlg::OnBnClickedButtonLocal() { static TCHAR BASED_CODE szFilter[] = _T("¸ðµçÆÄÀÏ(*.*)|*.*||"); CFileDialog dlg(TRUE, _T("*.*"), _T("All Files"), OFN_HIDEREADONLY, szFilter); if(IDOK == dlg.DoModal()) { CString strValue = dlg.GetPathName(); int nIdx = strValue.ReverseFind(_T('\\')); int nLength = strValue.GetLength() - nIdx; m_strLocalFolder = strValue.Left(nIdx); m_strLocalFile = strValue.Mid(nIdx+1, nLength); m_strServerFile = m_strLocalFile; m_strSignalFile = m_strLocalFile; m_strSignalFile += _T(".ini"); } UpdateData(FALSE); } void CFtpClientTesterDlg::OnBnClickedButtonSignal() { static TCHAR BASED_CODE szFilter[] = _T("¸ðµçÆÄÀÏ(*.*)|*.*||"); CFileDialog dlg(TRUE, _T("*.*"), _T("All Files"), OFN_HIDEREADONLY, szFilter); if(IDOK == dlg.DoModal()) { CString strValue = dlg.GetPathName(); int nIdx = strValue.ReverseFind(_T('\\')); int nLength = strValue.GetLength() - nIdx; m_strSignalFolder = strValue.Left(nIdx); m_strSignalFile = strValue.Mid(nIdx+1, nLength); } UpdateData(FALSE); }