From a6552335164ce062567b76aa7d097fd046129474 Mon Sep 17 00:00:00 2001 From: LYW <leeyeanwoo@diteam.co.kr> Date: 금, 23 7월 2021 10:07:55 +0900 Subject: [PATCH] Ongoing90 #3517 CF AOI Review 자가진단 기능 개선 --- DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp | 122 +++++++++++++++++++++------------------- 1 files changed, 65 insertions(+), 57 deletions(-) diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp index 4f22cb1..e2290d6 100644 --- a/DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp +++ b/DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp @@ -1,5 +1,5 @@ -// DitGlassRawMessengerDlg.cpp : 占쏙옙占쏙옙 占쏙옙占쏙옙 +// DitGlassRawMessengerDlg.cpp : 구현 파일 // #include "stdafx.h" @@ -23,20 +23,20 @@ #define GRID_TEXT_COLOR RGB(255,255,255) #define GRID_ALARM_TEXT_COLOR RGB(255,0,0) #define GRID_LINE_COLOR GRID_FIX_COLOR -// 占쏙옙占쏙옙 占쏙옙占싸그뤄옙 占쏙옙占쏙옙占쏙옙 占쏙옙占실댐옙 CAboutDlg 占쏙옙화 占쏙옙占쏙옙占쌉니댐옙. +// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다. class CAboutDlg : public CDialog { public: CAboutDlg(); -// 占쏙옙화 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쌉니댐옙. +// 대화 상자 데이터입니다. enum { IDD = IDD_ABOUTBOX }; protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 占쏙옙占쏙옙占쌉니댐옙. + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다. -// 占쏙옙占쏙옙占쌉니댐옙. +// 구현입니다. protected: DECLARE_MESSAGE_MAP() }; @@ -54,7 +54,7 @@ END_MESSAGE_MAP() -// CDitGlassRawMessengerDlg 占쏙옙화 占쏙옙占쏙옙 +// CDitGlassRawMessengerDlg 대화 상자 @@ -127,7 +127,7 @@ m_vecStrGridDefectHeader.push_back("CellY(mm)"); m_vecStrGridDefectHeader.push_back("ScrtRatio"); m_vecStrGridDefectHeader.push_back("Density"); - //201207 CJH - Merge 占쏙옙占쏙옙 확占쏙옙 + //201207 CJH - Merge 여부 확인 m_vecStrGridDefectHeader.push_back("MergeState"); } @@ -192,16 +192,16 @@ if (timestruct.tm_mon>11 || timestruct.tm_mon<0 ) ASSERT(FALSE); } -// CDitGlassRawMessengerDlg 占쌨쏙옙占쏙옙 처占쏙옙占쏙옙 +// CDitGlassRawMessengerDlg 메시지 처리기 BOOL CDitGlassRawMessengerDlg::OnInitDialog() { CDialog::OnInitDialog(); DragAcceptFiles(TRUE); - // 占시쏙옙占쏙옙 占쌨댐옙占쏙옙 "占쏙옙占쏙옙..." 占쌨댐옙 占쌓몌옙占쏙옙 占쌩곤옙占쌌니댐옙. + // 시스템 메뉴에 "정보..." 메뉴 항목을 추가합니다. - // IDM_ABOUTBOX占쏙옙 占시쏙옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙占쏙옙 占쌍억옙占� 占쌌니댐옙. + // IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); @@ -219,16 +219,16 @@ } } - // 占쏙옙 占쏙옙화 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. 占쏙옙占쏙옙 占쏙옙占싸그뤄옙占쏙옙 占쏙옙 창占쏙옙 占쏙옙화 占쏙옙占쌘곤옙 占싣댐옙 占쏙옙荑∽옙占� - // 占쏙옙占쏙옙占쌈울옙크占쏙옙 占쏙옙 占쌜억옙占쏙옙 占쌘듸옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. - SetIcon(m_hIcon, TRUE); // 큰 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. - SetIcon(m_hIcon, FALSE); // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. + // 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는 + // 프레임워크가 이 작업을 자동으로 수행합니다. + SetIcon(m_hIcon, TRUE); // 큰 아이콘을 설정합니다. + SetIcon(m_hIcon, FALSE); // 작은 아이콘을 설정합니다. - //트占쏙옙占싱억옙占쏙옙占쏙옙 占쏙옙占쏙옙 + //트레이아이콘 구성 m_TrayIcon = FALSE; ResTrayIcon(); - //占쏙옙占� 占쏙옙占쏙옙 + //빌드 정보 { CString strBuild; tm tmBuild; @@ -237,7 +237,7 @@ SetDlgItemText(IDC_BUILDDATE, strBuild); } - //占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占싻억옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/20] + //설정파일 정보 읽어 오기 [김태현 2018/11/20] { m_strConfigFile; { @@ -254,6 +254,8 @@ akFileDB.getItem("LogFilePath", m_ConfigOption.m_strLogFilePath, "c:\\AOIServer\\LogRawMessenger\\LogRawMessenger"); akFileDB.getItem("Stack_Use", &m_ConfigOption.m_bUseStack, 0); akFileDB.getItem("Stack_LocalPath", m_ConfigOption.m_strStackLocalPath, "D:\\DIT_ResultData\\Stack"); + akFileDB.getItem("RawMerge_Use", &m_ConfigOption.m_bUseRawMerge, 0); + akFileDB.getItem("RawMerge_LocalPath", m_ConfigOption.m_strRawMergeLocalPath, "D:\\DIT_ResultData\\RawMerge"); akFileDB.getItem("Stack_EquipID",m_ConfigOption.m_strStackEquipID, "AAAAA"); akFileDB.getItem("Stack_Param1",m_ConfigOption.m_strStackParam1, ""); akFileDB.getItem("Stack_Param2",m_ConfigOption.m_strStackParam2, ""); @@ -263,12 +265,14 @@ ((CButton*)GetDlgItem(IDC_CHECK_STACKFILEREAD))->SetCheck(m_ConfigOption.m_bUseStack); SetDlgItemText(IDC_EDIT_STACK_LOCALSAVEPATH, m_ConfigOption.m_strStackLocalPath); + ((CButton*)GetDlgItem(IDC_CHECK_RAWMERGEFILEREAD))->SetCheck(m_ConfigOption.m_bUseRawMerge); + SetDlgItemText(IDC_EDIT_RAWMERGE_LOCALSAVEPATH, m_ConfigOption.m_strRawMergeLocalPath); SetDlgItemText(IDC_EDIT_STACK_EQUIPID, m_ConfigOption.m_strStackEquipID); SetDlgItemText(IDC_EDIT_STACK_PARAM1, m_ConfigOption.m_strStackParam1); SetDlgItemText(IDC_EDIT_STACK_PARAM2, m_ConfigOption.m_strStackParam2); } - //占싸깍옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/20] + //로그 관련 [김태현 2018/11/20] { CakFileUtil fileutil; char strPath[256]; @@ -371,30 +375,30 @@ if(m_Server.CreateServer(m_ConfigOption.m_nMaxDataNumCell, m_ConfigOption.m_nMaxDataNumDefect) == FALSE) { - AfxMessageBox("占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌌니댐옙."); + AfxMessageBox("서버 생성 실패 종료 합니다."); exit(0); } - //占쏙옙占썹값 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2019/1/12] + //현재값 적용 [김태현 2019/1/12] { CDitGlassRawServer* pServer = (CDitGlassRawServer*) &m_Server; CgrmGlassRawData* pRawDataBuffer = &m_GlassRawDataBuffer; pRawDataBuffer->ImportGlassRaw(pServer->GetGlassRawInfo(), (char*)pServer->GetGlassData()); } - //占쌜억옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/13] + //작업 쓰레드 생성 [김태현 2018/11/13] { _beginthread(threadMain, NULL, this); } PostMessage(UM_GLASSRAW_CLIENTMESSAGE); - return TRUE; // 占쏙옙커占쏙옙占쏙옙 占쏙옙트占싼울옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 TRUE占쏙옙 占쏙옙환占쌌니댐옙. + return TRUE; // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다. } void CDitGlassRawMessengerDlg::OnBnClickedOk() { - // TODO: 占쏙옙占썩에 占쏙옙트占쏙옙 占싯몌옙 처占쏙옙占쏙옙 占쌘드를 占쌩곤옙占쌌니댐옙. + // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. OnOK(); } @@ -403,14 +407,14 @@ { NOTIFYICONDATA nid; nid.cbSize = sizeof(nid); - nid.hWnd = m_hWnd; // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌘듸옙 - nid.uID = IDR_MAINFRAME; // 占쏙옙占쏙옙占쏙옙 占쏙옙占쌀쏙옙 ID - nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // 占시뤄옙占쏙옙 占쏙옙占쏙옙 - nid.uCallbackMessage = UM_TRAYICON_MSG; // 占쌥뱄옙聘占쏙옙占� 占쏙옙占쏙옙 - nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 占쏙옙占쏙옙占쏙옙 占싸듸옙 + nid.hWnd = m_hWnd; // 메인 윈도우 핸들 + nid.uID = IDR_MAINFRAME; // 아이콘 리소스 ID + nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // 플래그 설정 + nid.uCallbackMessage = UM_TRAYICON_MSG; // 콜백메시지 설정 + nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 아이콘 로드 char strTitle[256]; - GetWindowText(strTitle, sizeof(strTitle)); // 캡占실바울옙 占쏙옙쨉占� 占쏙옙占쌘울옙 占쏙옙占쏙옙 + GetWindowText(strTitle, sizeof(strTitle)); // 캡션바에 출력된 문자열 얻음 lstrcpy(nid.szTip, strTitle); Shell_NotifyIcon(NIM_ADD, &nid); SendMessage(WM_SETICON, (WPARAM)TRUE, (LPARAM)nid.hIcon); @@ -433,7 +437,7 @@ GetCursorPos(&pos); { HMENU hMenu = CreatePopupMenu(); - AppendMenu(hMenu, MF_STRING, 0, "占쏙옙占쏙옙占쏙옙2占쏙옙트占쏙옙품"); + AppendMenu(hMenu, MF_STRING, 0, "연구소2파트작품"); AppendMenu(hMenu, MF_STRING, WM_DESTROY, "Exit"); TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, pos.x, pos.y, 0, GetSafeHwnd(), NULL); } @@ -461,19 +465,19 @@ } } -// 占쏙옙화 占쏙옙占쌘울옙 占쌍쇽옙화 占쏙옙占쌩몌옙 占쌩곤옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙占쏙옙占쏙옙 占쌓몌옙占쏙옙占쏙옙 -// 占싣뤄옙 占쌘드가 占십울옙占쌌니댐옙. 占쏙옙占쏙옙/占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙求占� MFC 占쏙옙占쏙옙 占쏙옙占싸그뤄옙占쏙옙 占쏙옙荑∽옙占� -// 占쏙옙占쏙옙占쌈울옙크占쏙옙占쏙옙 占쏙옙 占쌜억옙占쏙옙 占쌘듸옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. +// 대화 상자에 최소화 단추를 추가할 경우 아이콘을 그리려면 +// 아래 코드가 필요합니다. 문서/뷰 모델을 사용하는 MFC 응용 프로그램의 경우에는 +// 프레임워크에서 이 작업을 자동으로 수행합니다. void CDitGlassRawMessengerDlg::OnPaint() { if (IsIconic()) { - CPaintDC dc(this); // 占쌓몌옙占썩를 占쏙옙占쏙옙 占쏙옙占쏙옙決占� 占쏙옙占쌔쏙옙트 + CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); - // 클占쏙옙占싱억옙트 占썹각占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏘데占쏙옙 占쏙옙占쏙옙求占�. + // 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다. int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; @@ -481,7 +485,7 @@ int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; - // 占쏙옙占쏙옙占쏙옙占쏙옙 占쌓몌옙占싹댐옙. + // 아이콘을 그립니다. dc.DrawIcon(x, y, m_hIcon); } else @@ -490,8 +494,8 @@ } } -// 占쏙옙占쏙옙微占� 占쌍쇽옙화占쏙옙 창占쏙옙 占쏙옙占� 占쏙옙占싫울옙 커占쏙옙占쏙옙 표占시되듸옙占쏙옙 占시쏙옙占쌜울옙占쏙옙 -// 占쏙옙 占쌉쇽옙占쏙옙 호占쏙옙占쌌니댐옙. +// 사용자가 최소화된 창을 끄는 동안에 커서가 표시되도록 시스템에서 +// 이 함수를 호출합니다. HCURSOR CDitGlassRawMessengerDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); @@ -501,15 +505,15 @@ void CDitGlassRawMessengerDlg::OnDropFiles(HDROP hDropInfo) { int nFiles; - char szPathName[MAX_PATH]; // 占쏙옙占쏙옙 占쏙옙罐占쏙옙占� 占쏙옙載o옙占�. + char szPathName[MAX_PATH]; // 파일 경로면이 들어간다. CString strFileName; - // 占쏙옙撻占� 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 + // 드롭된 파일의 갯수 nFiles = ::DragQueryFile( hDropInfo, 0xFFFFFFFF, szPathName, MAX_PATH ); - for(int i = nFiles-1 ; i >= 0; i--) //占쏙옙撻占� 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙큼 占쏙옙占쏙옙占쏙옙 占쏙옙占썽서 占쏙옙占쏙옙 占쏙옙罐占� 占쌨쇽옙占쏙옙 占쌘쏙옙占쏙옙 占쏙옙占� + for(int i = nFiles-1 ; i >= 0; i--) //드롭된 파일 갯수만큼 루프를 돌면서 파일 경로를 메세지 박스로 출력 { - // 占쏙옙占쏙옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙 + // 파일의 경로 얻어옴 ::DragQueryFile(hDropInfo, i, szPathName, MAX_PATH); SetDlgItemText(IDC_EDIT_RAWFILENAME, szPathName); @@ -601,18 +605,18 @@ if(pRawInfo->m_nCommandIdxWrite != pRawInfo->m_nCommandIdxRead) { - int nReadIdx = (pRawInfo->m_nCommandIdxRead+1)%COMMAND_MAXCOUNT; //占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙占쏙옙 占싹놂옙 占쏙옙占쏙옙占쏙옙占싼쇽옙 占싻는댐옙. [占쏙옙占쏙옙占쏙옙 2018/11/13] + int nReadIdx = (pRawInfo->m_nCommandIdxRead+1)%COMMAND_MAXCOUNT; //현재는 읽은 마지막 포인트임으로 하나 증가시켜서 읽는다. [김태현 2018/11/13] _grmDitCommand::_grmCommand* pCommand = &pRawInfo->m_nCommandBuffer[nReadIdx]; AKLOG("Recv Command ID:%d(r%d/w%d)", pCommand->nCommand, nReadIdx, pRawInfo->m_nCommandIdxWrite); pRawInfo->m_nCommandIdxRead = nReadIdx; - if(pCommand->nResult == -1) //占쏙옙占� 占쏙옙占쏙옙 占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/13] + if(pCommand->nResult == -1) //명령 수행 전 [김태현 2018/11/13] { pCommand->nResult = ProcessCommand( (emGlassRawCommand)pCommand->nCommand, pCommand->strParam ); } else { - //占싱뱄옙 처占쏙옙 占싫곤옙 [占쏙옙占쏙옙占쏙옙 2018/11/13] + //이미 처리 된거 [김태현 2018/11/13] } AKLOG("Recv Command ID:%d(r%d/w%d) Process End(Result:%d)", pCommand->nCommand, nReadIdx, pRawInfo->m_nCommandIdxWrite, pCommand->nResult); @@ -658,7 +662,7 @@ { nResult = m_pGlassRawMaker->SequenceInspectEnd(pRawDataBuffer); pServer->GetGlassRawInfo()->m_ServerProcStep = APS_InspectEnd; - //Stack 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌨모리울옙 占쌥울옙 占싹깍옙 占쏙옙占쏙옙 Export + //Stack 정보를 공유메모리에 반영 하기 위한 Export //pRawDataBuffer->ExportGlassRaw(pServer->GetGlassRawInfo(), (char*)pServer->GetGlassData()); break; } @@ -677,7 +681,7 @@ case grcSequenceCustomReviewDataRead: { nResult = m_pGlassRawMaker->SequenceCustomizeReview(pRawDataBuffer); - ////Customize Review占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙트 + ////Customize Review를 위한 업데이트 //{ // memcpy(pServer->GetDefectData(0), pRawDataBuffer->GetDefectData(0), sizeof(_grmDefectData)*pServer->GetGlassRawInfo()->m_nDefectMaxDataNum); // memcpy(pServer->GetCellData(0), pRawDataBuffer->GetCellData(0), sizeof(_grmCellData)*pServer->GetGlassRawInfo()->m_nCellMaxDataNum); @@ -777,14 +781,14 @@ if(m_pGlassRawMaker) delete m_pGlassRawMaker; - if(m_TrayIcon) // 占쏙옙占쏙옙 트占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占실억옙占쏙옙占쏙옙 확占쏙옙 + if(m_TrayIcon) // 현재 트레이 아이콘으로 설정되었는지 확인 { NOTIFYICONDATA nid; nid.cbSize = sizeof(nid); - nid.hWnd = m_hWnd; // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌘듸옙 + nid.hWnd = m_hWnd; // 메인 윈도우 핸들 nid.uID = IDR_MAINFRAME; - // 占쌜억옙 표占쏙옙占쏙옙(TaskBar)占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占싼댐옙. + // 작업 표시줄(TaskBar)의 상태 영역에 아이콘을 삭제한다. Shell_NotifyIcon(NIM_DELETE, &nid); } @@ -942,7 +946,7 @@ BOOL CDitGlassRawMessengerDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { - // TODO: 占쏙옙占썩에 특占쏙옙화占쏙옙 占쌘드를 占쌩곤옙 占쏙옙/占실댐옙 占썩본 클占쏙옙占쏙옙占쏙옙 호占쏙옙占쌌니댐옙. + // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. if (m_gridCellInfo.GetSafeHwnd() && wParam == (WPARAM)m_gridCellInfo.GetDlgCtrlID()) { *pResult = 1; @@ -1264,7 +1268,7 @@ CString str; strItem = _T(" "); - // Panel x占쏙옙, y占쏙옙占쏙옙 占쌜라스울옙 占쌥댐옙 [6/9/2017 bhs] + // Panel x축, y축은 글라스와 반대 [6/9/2017 bhs] if(1)//g_pBasic->GetScanCoordination() == SC_XCoord) str.Format("% 5.3f", (double)pDefect->m_nUMCellX / 1000.0); else @@ -1287,7 +1291,7 @@ CString str; strItem = _T(" "); - // Panel x占쏙옙, y占쏙옙占쏙옙 占쌜라스울옙 占쌥댐옙 [6/9/2017 bhs] + // Panel x축, y축은 글라스와 반대 [6/9/2017 bhs] if(1)//g_pBasic->GetScanCoordination() == SC_XCoord) str.Format("% 5.3f", (double)pDefect->m_nUMCellY / 1000.0); else @@ -1345,6 +1349,8 @@ akFileDB.setItem("Stack_Use", m_ConfigOption.m_bUseStack); akFileDB.setItem("Stack_LocalPath", m_ConfigOption.m_strStackLocalPath); + akFileDB.setItem("RawMerge_Use", m_ConfigOption.m_bUseRawMerge); + akFileDB.setItem("RawMerge_LocalPath", m_ConfigOption.m_strRawMergeLocalPath); akFileDB.setItem("Stack_EquipID", m_ConfigOption.m_strStackEquipID); akFileDB.setItem("Stack_Param1",m_ConfigOption.m_strStackParam1); akFileDB.setItem("Stack_Param2",m_ConfigOption.m_strStackParam2); @@ -1439,7 +1445,7 @@ void CDitGlassRawMessengerDlg::OnBnClickedBtnImportRaw() { - AKLOG("占싱깍옙占쏙옙占� 占쏙옙占쏙옙占쏙옙 占십요가 占쌍겠놂옙.. 占쏙옙占쏙옙占쏙옙..."); + AKLOG("이기능은 가급적 필요가 있겠나.. 싶으네..."); PostMessage(UM_GLASSRAW_CLIENTMESSAGE); } @@ -1524,6 +1530,8 @@ { m_ConfigOption.m_bUseStack = ((CButton*)GetDlgItem(IDC_CHECK_STACKFILEREAD))->GetCheck(); GetDlgItemText(IDC_EDIT_STACK_LOCALSAVEPATH,m_ConfigOption.m_strStackLocalPath, 256); + m_ConfigOption.m_bUseRawMerge = ((CButton*)GetDlgItem(IDC_CHECK_RAWMERGEFILEREAD))->GetCheck(); + GetDlgItemText(IDC_EDIT_RAWMERGE_LOCALSAVEPATH, m_ConfigOption.m_strRawMergeLocalPath, 256); GetDlgItemText(IDC_EDIT_STACK_EQUIPID,m_ConfigOption.m_strStackEquipID, 32); GetDlgItemText(IDC_EDIT_STACK_PARAM1,m_ConfigOption.m_strStackParam1, 32); GetDlgItemText(IDC_EDIT_STACK_PARAM2,m_ConfigOption.m_strStackParam2, 32); @@ -1574,13 +1582,13 @@ - CString str = _T("All(*.*)|*.*|"); // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 + CString str = _T("All(*.*)|*.*|"); // 선택할 파일 종류 CString File; CString strFileList; CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, str, this); - const int c_cMaxFiles = 400 /*占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙*/ ; // 占쌨몌옙 占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 확占쏙옙 占쏙옙占쏙옙占쌍몌옙 占쏘개 占쏙옙占쏙옙 + const int c_cMaxFiles = 400 /*선택할 파일 숫자*/ ; // 메모리 부족현상으로 확장 안해주면 몇개 못씀 const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1; dlg.GetOFN().lpstrFile = strFileList.GetBuffer(c_cbBuffSize); dlg.GetOFN().nMaxFile = c_cbBuffSize; @@ -1591,7 +1599,7 @@ { for(POSITION pos=dlg.GetStartPosition(); pos != NULL;) { - // 占쏙옙체占쏙옙占쏙옙占쏙옙 ResetContent + // 전체삭제는 ResetContent File = dlg.GetNextPathName(pos); -- Gitblit v1.9.3