// DlgAlign.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "ReviewRecipeEditor.h" #include "DlgAlign.h" #include "ReviewRecipeEditorDlg.h" #include "CHCommonControls/GridCellButton.h" // CDlgAlign ´ëÈ­ »óÀÚÀÔ´Ï´Ù. #include "CHImageControls/CHImageView.h" #include "CHImageControls/CHImageProcess.h" using namespace CHImageControls; IMPLEMENT_DYNAMIC(CDlgAlign, CDialog) CDlgAlign::CDlgAlign(CWnd* pParent /*=NULL*/) : CDialog(CDlgAlign::IDD, pParent) { m_pFirstView = new CCHImageView(this); m_pSecondView = new CCHImageView(this); } CDlgAlign::~CDlgAlign() { if (m_pFirstView) { delete m_pFirstView; m_pFirstView = NULL; } if (m_pSecondView) { delete m_pSecondView; m_pSecondView = NULL; } } void CDlgAlign::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_GRID_RCP_ALIGN_FIND_INFO, m_ctrlGridAlignFindInfo); DDX_Control(pDX, IDC_GRID_RCP_ALIGN_LIGHT_INFO, m_ctrlGridAlignLightInfo); DDX_Control(pDX, IDC_GRID_RCP_ALIGN_AUTO_INFO, m_ctrlGridAlignAutoInfo); DDX_Control(pDX, IDC_GRID_RCP_ALIGN_ROTATE_INFO, m_ctrlGridAlignRotateInfo); DDX_Control(pDX, IDC_GRID_RCP_ALIGN_IMAGE_INFO, m_ctrlGridAlignImageInfo); DDX_Control(pDX, IDC_CHECK_AUTO_PROCESS, m_ctrlCheckAutoProcess); DDX_Control(pDX, IDC_CHECK_MANUAL_PROCESS, m_ctrlCheckManualProcess); DDX_Control(pDX, IDC_CHECK_ROTATE_PROCESS, m_ctrlCheckRotateProcess); DDX_Control(pDX, IDC_CHECK_IMAGE_PROCESS, m_ctrlCheckImageProcess); DDX_Control(pDX, IDC_CHECK_EDGE_PROCESS, m_ctrlEdgeProcess); DDX_Control(pDX, IDC_CHECK_EDGEALIGN_PROCESS, m_ctrlCheckEdgeAlignProcess); DDX_Control(pDX, IDC_CHECK_ALIGN_SKIP, m_ctrlCheckAlignSkip); DDX_Control(pDX, IDC_CHECK_TOTALPITCHMEASRE, m_ctrlTotalPitchMeasure); } BEGIN_MESSAGE_MAP(CDlgAlign, CDialog) ON_BN_CLICKED(IDC_BUTTON_RCP_ALIGN_RESET, &CDlgAlign::OnBnClickedButtonRcpAlignReset) ON_BN_CLICKED(IDC_BUTTON_RCP_ALIGN_APPLY, &CDlgAlign::OnBnClickedButtonRcpAlignApply) ON_NOTIFY(NM_CLICK, IDC_GRID_RCP_ALIGN_IMAGE_INFO, &CDlgAlign::OnClickImageInfo) ON_BN_CLICKED(IDC_BUTTON1, &CDlgAlign::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON_RCP_FIND_TEST, &CDlgAlign::OnBnClickedButtonRcpFindTest) END_MESSAGE_MAP() void CDlgAlign::OnClickImageInfo(NMHDR *pNotifyStruct, LRESULT* pResult) { NM_GRIDVIEW* pItem = (NM_GRIDVIEW*) pNotifyStruct; if (pItem==NULL) return; if (pItem->iColumn!=2) return; int nIdx = pItem->iRow; //À̰Թ¹Áö??? chm190811chm //if (nIdx<0 || nIdx>1) return; CString szFilter = _T("BMP Files(*.bmp)|*.bmp||"); CString strPath; CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter); dlg.m_ofn.lpstrTitle = _T("Select Align Image"); dlg.m_ofn.lpstrInitialDir = ALIGN_IMAGE_PATH; if(dlg.DoModal() == IDOK) { CString strFilepath = dlg.GetPathName(); CString strFilename = dlg.GetFileName(); if (nIdx==0 && m_pFirstView->LoadImage(strFilepath)) { m_pFirstView->Invalidate(TRUE); } else if (nIdx==1 && m_pSecondView->LoadImage(strFilepath)) { m_pSecondView->Invalidate(TRUE); } m_ctrlGridAlignImageInfo.SetItemText(nIdx, 1, strFilename); m_ctrlGridAlignImageInfo.Invalidate(TRUE); } } // CDlgAlign ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CDlgAlign::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù. InitAlignFindInfoGridControl(); FillAlignFindInfo(); InitAlignLightInfoGridControl(); FillAlignLightInfo(); InitAlignAutoInfoGridControl(); FillAlignAutoInfo(); InitAlignRotateInfoGridControl(); FillAlignRotateInfo(); InitAlignImageInfoGridControl(); FillAlignImageInfo(); if (m_pFirstView) { CRect rect; rect.left = 10; rect.top = 550; rect.right = rect.left + 232; rect.bottom = rect.top + 232; m_pFirstView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY , rect, this, 0); m_pFirstView->SetDrawType(DrawFit); m_pFirstView->SetViewName(_T("First")); m_pFirstView->ShowWindow(SW_SHOW); } if (m_pSecondView) { CRect rect; rect.left = 244; rect.top = 550; rect.right = rect.left + 232; rect.bottom = rect.top + 232; m_pSecondView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY , rect, this, 0); m_pSecondView->SetDrawType(DrawFit); m_pSecondView->SetViewName(_T("Second")); m_pSecondView->ShowWindow(SW_SHOW); } return TRUE; // return TRUE unless you set the focus to a control // ¿¹¿Ü: OCX ¼Ó¼º ÆäÀÌÁö´Â FALSE¸¦ ¹ÝÈ¯ÇØ¾ß ÇÕ´Ï´Ù. } BOOL CDlgAlign::PreTranslateMessage(MSG* pMsg) { // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù. if( pMsg->message == WM_KEYDOWN ) { if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE ) { ::TranslateMessage(pMsg); ::DispatchMessage(pMsg); return TRUE; } } return CDialog::PreTranslateMessage(pMsg); } void CDlgAlign::OnBnClickedButtonRcpAlignReset() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. int i, nRowIdx, nColIdx; CString strItemText; nRowIdx = 1; strItemText = _T(""); nColIdx = 0; for(i = 0; i < ALIGN_FIND_INFO_GRID_COL_COUNT; i++) { m_ctrlGridAlignFindInfo.SetItemText(nRowIdx, nColIdx++, strItemText); } m_ctrlGridAlignFindInfo.Invalidate(FALSE); nColIdx = 0; for(i = 0; i < ALIGN_LIGHT_INFO_GRID_COL_COUNT; i++) { m_ctrlGridAlignLightInfo.SetItemText(nRowIdx, nColIdx++, strItemText); } m_ctrlGridAlignLightInfo.Invalidate(FALSE); for(i = 1; i < ALIGN_AUTO_INFO_GRID_ROW_COUNT; i++) { for (int j=1; jGetRsAlignManager(); if(pRcpRsAlignManager == NULL) return; nRowIdx = 1; nColIdx = 0; //¹®Åΰª strItemText = m_ctrlGridAlignFindInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nEdgeWidth = _ttoi(strItemText); //¹®Åΰª strItemText = m_ctrlGridAlignFindInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nEdgeHeight = _ttoi(strItemText); //¹®Åΰª strItemText = m_ctrlGridAlignFindInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nEdgeThreshold = _ttoi(strItemText); //º´ÇհŸ® strItemText = m_ctrlGridAlignFindInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nMergeRange = _ttoi(strItemText); //¸ÅĪ·ü strItemText = m_ctrlGridAlignFindInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dEdgeRate = _tcstod(strItemText, NULL); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bUseEdge = m_ctrlEdgeProcess.GetCheck(); nColIdx = 0; //first strItemText = m_ctrlGridAlignLightInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dFirstCamExposure = _tcstod(strItemText, NULL); //second strItemText = m_ctrlGridAlignLightInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dSecondCamExposure = _tcstod(strItemText, NULL); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bManualProcess = m_ctrlCheckManualProcess.GetCheck(); nRowIdx = 1; nColIdx = 1; strItemText = m_ctrlGridAlignAutoInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dTargetMin = _tcstod(strItemText, NULL); strItemText = m_ctrlGridAlignAutoInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dTargetMax = _tcstod(strItemText, NULL); nRowIdx = 2; nColIdx = 1; strItemText = m_ctrlGridAlignAutoInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dExposureMin = _tcstod(strItemText, NULL); strItemText = m_ctrlGridAlignAutoInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dExposureMax = _tcstod(strItemText, NULL); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bAutoProcess = m_ctrlCheckAutoProcess.GetCheck(); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bEdgeAlignProcess = m_ctrlCheckEdgeAlignProcess.GetCheck(); nColIdx = 0; nRowIdx = 1; strItemText = m_ctrlGridAlignRotateInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nRetryCount = _ttoi(strItemText); strItemText = m_ctrlGridAlignRotateInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dGlassAngleMin = _tcstod(strItemText, NULL); strItemText = m_ctrlGridAlignRotateInfo.GetItemText(nRowIdx, nColIdx++); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dGlassAngleMax = _tcstod(strItemText, NULL); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bRotateProcess = m_ctrlCheckRotateProcess.GetCheck(); nColIdx = 1; nRowIdx = 0; pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strFirstImageFile = m_ctrlGridAlignImageInfo.GetItemText(nRowIdx, nColIdx); nRowIdx++; pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strSecondImageFile = m_ctrlGridAlignImageInfo.GetItemText(nRowIdx, nColIdx); nRowIdx++; strItemText = m_ctrlGridAlignImageInfo.GetItemText(nRowIdx, nColIdx); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dMatchingRate = _tcstod(strItemText, NULL); nRowIdx++; pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strTotalPitchImageFile = m_ctrlGridAlignImageInfo.GetItemText(nRowIdx, nColIdx); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bUseImage = m_ctrlCheckImageProcess.GetCheck(); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bAlignSkipMode = m_ctrlCheckAlignSkip.GetCheck(); pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bTotalPitchMeasure = m_ctrlTotalPitchMeasure.GetCheck(); } void CDlgAlign::InitAlignFindInfoGridControl() { int nRowIdx, nColIdx, nRows, nCols, nFixRows, nDataColumnWidth, nMargin; CString strTemp; CRect rect; nRows = ALIGN_FIND_INFO_GRID_ROW_COUNT; nCols = ALIGN_FIND_INFO_GRID_COL_COUNT; nFixRows = 1; nRowIdx = 0; nColIdx = 0; m_ctrlGridAlignFindInfo.GetWindowRect(&rect); m_ctrlGridAlignFindInfo.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0)); m_ctrlGridAlignFindInfo.SetRowCount(nRows); m_ctrlGridAlignFindInfo.SetColumnCount(nCols); m_ctrlGridAlignFindInfo.SetFixedRowCount(nFixRows); nMargin = 5; nDataColumnWidth = (rect.Width() - nMargin) / ALIGN_FIND_INFO_GRID_COL_COUNT; GV_ITEM Item; Item.mask = GVIF_TEXT; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Width(pxl)"));//_T("¹®Åΰª")); Item.strText = strTemp; m_ctrlGridAlignFindInfo.SetItem(&Item); m_ctrlGridAlignFindInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Height(pxl)"));//_T("¹®Åΰª")); Item.strText = strTemp; m_ctrlGridAlignFindInfo.SetItem(&Item); m_ctrlGridAlignFindInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Edge Thres(0~255)"));//_T("¹®Åΰª")); Item.strText = strTemp; m_ctrlGridAlignFindInfo.SetItem(&Item); m_ctrlGridAlignFindInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Merge Dist(pxl)"));//_T("º´ÇհŸ®")); Item.strText = strTemp; m_ctrlGridAlignFindInfo.SetItem(&Item); m_ctrlGridAlignFindInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Edge Rate(0~1)"));//_T("¸ÅĪ·ü")); Item.strText = strTemp; m_ctrlGridAlignFindInfo.SetItem(&Item); m_ctrlGridAlignFindInfo.SetColumnWidth(nColIdx, nDataColumnWidth); } void CDlgAlign::FillAlignFindInfo() { int nRowIdx, nColIdx; CString strItemText; CRcp_RsAlignManager* pRcpRsAlignManager = NULL; CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg == NULL) return; pRcpRsAlignManager = pDlg->GetRsAlignManager(); if(pRcpRsAlignManager == NULL) return; nRowIdx = 1; nColIdx = 0; // use edge m_ctrlEdgeProcess.SetCheck(pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bUseEdge); // width strItemText.Format(_T("%d"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nEdgeWidth); m_ctrlGridAlignFindInfo.SetItemText(nRowIdx, nColIdx++, strItemText); // height strItemText.Format(_T("%d"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nEdgeHeight); m_ctrlGridAlignFindInfo.SetItemText(nRowIdx, nColIdx++, strItemText); //¹®Åΰª strItemText.Format(_T("%d"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nEdgeThreshold); m_ctrlGridAlignFindInfo.SetItemText(nRowIdx, nColIdx++, strItemText); //º´ÇհŸ® strItemText.Format(_T("%d"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nMergeRange); m_ctrlGridAlignFindInfo.SetItemText(nRowIdx, nColIdx++, strItemText); //¸ÅĪ·ü strItemText.Format(_T("%.03lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dEdgeRate); m_ctrlGridAlignFindInfo.SetItemText(nRowIdx, nColIdx++, strItemText); m_ctrlGridAlignFindInfo.Invalidate(FALSE); } void CDlgAlign::InitAlignLightInfoGridControl() { int nRowIdx, nColIdx, nRows, nCols, nFixRows, nDataColumnWidth, nMargin; CString strTemp; CRect rect; nRows = ALIGN_LIGHT_INFO_GRID_ROW_COUNT; nCols = ALIGN_LIGHT_INFO_GRID_COL_COUNT; nFixRows = 1; nRowIdx = 0; nColIdx = 0; m_ctrlGridAlignLightInfo.GetWindowRect(&rect); m_ctrlGridAlignLightInfo.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0)); m_ctrlGridAlignLightInfo.SetRowCount(nRows); m_ctrlGridAlignLightInfo.SetColumnCount(nCols); m_ctrlGridAlignLightInfo.SetFixedRowCount(nFixRows); nMargin = 5; nDataColumnWidth = (rect.Width() - nMargin) / ALIGN_LIGHT_INFO_GRID_COL_COUNT; GV_ITEM Item; Item.mask = GVIF_TEXT; Item.row = nRowIdx; Item.col = nColIdx; //strTemp.Format(_T("FirstCam Exposure Time (usec)")); strTemp.Format(_T("FirstCam Light Level (0 ~ 255)")); Item.strText = strTemp; m_ctrlGridAlignLightInfo.SetItem(&Item); m_ctrlGridAlignLightInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; //strTemp.Format(_T("SecondCam Exposure Time (usec)")); strTemp.Format(_T("SecondCam Light Level (0 ~ 255)")); Item.strText = strTemp; m_ctrlGridAlignLightInfo.SetItem(&Item); m_ctrlGridAlignLightInfo.SetColumnWidth(nColIdx, nDataColumnWidth); } void CDlgAlign::FillAlignLightInfo() { int nRowIdx, nColIdx; CString strItemText; CRcp_RsAlignManager* pRcpRsAlignManager = NULL; CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg == NULL) return; pRcpRsAlignManager = pDlg->GetRsAlignManager(); if(pRcpRsAlignManager == NULL) return; nRowIdx = 1; nColIdx = 0; strItemText.Format(_T("%.3lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dFirstCamExposure); m_ctrlGridAlignLightInfo.SetItemText(nRowIdx, nColIdx++, strItemText); strItemText.Format(_T("%.3lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dSecondCamExposure); m_ctrlGridAlignLightInfo.SetItemText(nRowIdx, nColIdx++, strItemText); m_ctrlCheckManualProcess.SetCheck(pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bManualProcess); m_ctrlGridAlignFindInfo.Invalidate(FALSE); } void CDlgAlign::InitAlignImageInfoGridControl() { int nRowIdx, nColIdx, nRows, nCols, nFixCols, nDataColumnWidth, nMargin; CString strTemp; CRect rect; nRows = ALIGN_IMAGE_INFO_GRID_ROW_COUNT; nCols = ALIGN_IMAGE_INFO_GRID_COL_COUNT; nFixCols = 1; nRowIdx = 0; nColIdx = 0; m_ctrlGridAlignImageInfo.GetWindowRect(&rect); m_ctrlGridAlignImageInfo.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0)); m_ctrlGridAlignImageInfo.SetRowCount(nRows); m_ctrlGridAlignImageInfo.SetColumnCount(nCols); m_ctrlGridAlignImageInfo.SetFixedColumnCount(nFixCols); //m_ctrlGridAlignImageInfo.SetEditable(FALSE); nMargin = 5; nDataColumnWidth = (rect.Width() - nMargin) / ALIGN_IMAGE_INFO_GRID_COL_COUNT; GV_ITEM Item; Item.mask = GVIF_TEXT; nColIdx; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("First Mark")); Item.strText = strTemp; m_ctrlGridAlignImageInfo.SetItem(&Item); nRowIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Second Mark")); Item.strText = strTemp; m_ctrlGridAlignImageInfo.SetItem(&Item); nRowIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Matching Rate")); Item.strText = strTemp; m_ctrlGridAlignImageInfo.SetItem(&Item); nRowIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("TotalPitch")); Item.strText = strTemp; m_ctrlGridAlignImageInfo.SetItem(&Item); m_ctrlGridAlignImageInfo.SetColumnWidth(0, 100); m_ctrlGridAlignImageInfo.SetColumnWidth(1, 280); m_ctrlGridAlignImageInfo.SetColumnWidth(2, 80); } void CDlgAlign::FillAlignImageInfo() { int nRowIdx, nColIdx; CString strItemText; CRcp_RsAlignManager* pRcpRsAlignManager = NULL; CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg == NULL) return; pRcpRsAlignManager = pDlg->GetRsAlignManager(); if(pRcpRsAlignManager == NULL) return; // first nRowIdx = 0; nColIdx = 1; strItemText = pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strFirstImageFile; m_ctrlGridAlignImageInfo.SetItemText(nRowIdx, nColIdx, strItemText); CString strFilename = ALIGN_IMAGE_PATH; strFilename = strFilename + _T("\\") + strItemText; m_pFirstView->LoadImage(strFilename); /*m_pFirstView->Invalidate(TRUE);*/ nColIdx = 2; m_ctrlGridAlignImageInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellButton)); CGridCellButton *pCellButton = (CGridCellButton*)m_ctrlGridAlignImageInfo.GetCell(nRowIdx, nColIdx); pCellButton->SetText(_T("Browser")); // second nRowIdx = 1; nColIdx = 1; strItemText = pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strSecondImageFile; m_ctrlGridAlignImageInfo.SetItemText(nRowIdx, nColIdx, strItemText); strFilename = ALIGN_IMAGE_PATH; strFilename = strFilename + _T("\\") + strItemText; m_pSecondView->LoadImage(strFilename); //m_pSecondView->Invalidate(TRUE); nColIdx = 2; m_ctrlGridAlignImageInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellButton)); pCellButton = (CGridCellButton*)m_ctrlGridAlignImageInfo.GetCell(nRowIdx, nColIdx); pCellButton->SetText(_T("Browser")); // nRowIdx = 2; nColIdx = 1; strItemText.Format(_T("%.3lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dMatchingRate); m_ctrlGridAlignImageInfo.SetItemText(nRowIdx, nColIdx, strItemText); // nRowIdx = 3; nColIdx = 1; strItemText = pRcpRsAlignManager->GetRsRcpAlignInfo()->m_strTotalPitchImageFile; m_ctrlGridAlignImageInfo.SetItemText(nRowIdx, nColIdx, strItemText); strFilename = ALIGN_IMAGE_PATH; strFilename = strFilename + _T("\\") + strItemText; //m_pFirstView->LoadImage(strFilename); /*m_pFirstView->Invalidate(TRUE);*/ nColIdx = 2; m_ctrlGridAlignImageInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellButton)); pCellButton = (CGridCellButton*)m_ctrlGridAlignImageInfo.GetCell(nRowIdx, nColIdx); pCellButton->SetText(_T("Browser")); m_ctrlCheckImageProcess.SetCheck(pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bUseImage); m_ctrlCheckAlignSkip.SetCheck(pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bAlignSkipMode); m_ctrlTotalPitchMeasure.SetCheck(pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bTotalPitchMeasure); } void CDlgAlign::InitAlignRotateInfoGridControl() { int nRowIdx, nColIdx, nRows, nCols, nFixRows, nDataColumnWidth, nMargin; CString strTemp; CRect rect; nRows = ALIGN_ROTATE_INFO_GRID_ROW_COUNT; nCols = ALIGN_ROTATE_INFO_GRID_COL_COUNT; nFixRows = 1; nRowIdx = 0; nColIdx = 0; m_ctrlGridAlignRotateInfo.GetWindowRect(&rect); m_ctrlGridAlignRotateInfo.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0)); m_ctrlGridAlignRotateInfo.SetRowCount(nRows); m_ctrlGridAlignRotateInfo.SetColumnCount(nCols); m_ctrlGridAlignRotateInfo.SetFixedRowCount(nFixRows); nMargin = 5; nDataColumnWidth = (rect.Width() - nMargin) / ALIGN_ROTATE_INFO_GRID_COL_COUNT; GV_ITEM Item; Item.mask = GVIF_TEXT; nColIdx; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Retry Count (ea)")); Item.strText = strTemp; m_ctrlGridAlignRotateInfo.SetItem(&Item); m_ctrlGridAlignRotateInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Min Angle (degree)")); Item.strText = strTemp; m_ctrlGridAlignRotateInfo.SetItem(&Item); m_ctrlGridAlignRotateInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Max Angle (degree)")); Item.strText = strTemp; m_ctrlGridAlignRotateInfo.SetItem(&Item); m_ctrlGridAlignRotateInfo.SetColumnWidth(nColIdx, nDataColumnWidth); } void CDlgAlign::FillAlignRotateInfo() { int nRowIdx, nColIdx; CString strItemText; CRcp_RsAlignManager* pRcpRsAlignManager = NULL; CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg == NULL) return; pRcpRsAlignManager = pDlg->GetRsAlignManager(); if(pRcpRsAlignManager == NULL) return; nRowIdx = 1; nColIdx = 0; strItemText.Format(_T("%d"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_nRetryCount); m_ctrlGridAlignRotateInfo.SetItemText(nRowIdx, nColIdx++, strItemText); strItemText.Format(_T("%.08lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dGlassAngleMin); m_ctrlGridAlignRotateInfo.SetItemText(nRowIdx, nColIdx++, strItemText); strItemText.Format(_T("%.08lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dGlassAngleMax); m_ctrlGridAlignRotateInfo.SetItemText(nRowIdx, nColIdx++, strItemText); m_ctrlCheckRotateProcess.SetCheck(pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bRotateProcess); m_ctrlGridAlignRotateInfo.Invalidate(FALSE); } void CDlgAlign::InitAlignAutoInfoGridControl() { int nRowIdx, nColIdx, nRows, nCols, nFixRows, nDataColumnWidth, nMargin; CString strTemp; CRect rect; nRows = ALIGN_AUTO_INFO_GRID_ROW_COUNT; nCols = ALIGN_AUTO_INFO_GRID_COL_COUNT; nFixRows = 1; nRowIdx = 0; nColIdx = 0; m_ctrlGridAlignAutoInfo.GetWindowRect(&rect); m_ctrlGridAlignAutoInfo.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0)); m_ctrlGridAlignAutoInfo.SetRowCount(nRows); m_ctrlGridAlignAutoInfo.SetColumnCount(nCols); m_ctrlGridAlignAutoInfo.SetFixedRowCount(nFixRows); m_ctrlGridAlignAutoInfo.SetFixedColumnCount(1); nMargin = 5; nDataColumnWidth = (rect.Width() - nMargin) / ALIGN_AUTO_INFO_GRID_COL_COUNT; GV_ITEM Item; Item.mask = GVIF_TEXT; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("")); Item.strText = strTemp; m_ctrlGridAlignAutoInfo.SetItem(&Item); m_ctrlGridAlignAutoInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("MIN Value")); Item.strText = strTemp; m_ctrlGridAlignAutoInfo.SetItem(&Item); m_ctrlGridAlignAutoInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nColIdx++; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("MAX Value")); Item.strText = strTemp; m_ctrlGridAlignAutoInfo.SetItem(&Item); m_ctrlGridAlignAutoInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nRowIdx++; nColIdx = 0; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Light Target (gLevel)")); Item.strText = strTemp; m_ctrlGridAlignAutoInfo.SetItem(&Item); m_ctrlGridAlignAutoInfo.SetColumnWidth(nColIdx, nDataColumnWidth); nRowIdx++; Item.row = nRowIdx; Item.col = nColIdx; //strTemp.Format(_T("Exposure Time (usec)")); strTemp.Format(_T("Light Level (0 ~ 255)")); Item.strText = strTemp; m_ctrlGridAlignAutoInfo.SetItem(&Item); m_ctrlGridAlignAutoInfo.SetColumnWidth(nColIdx, nDataColumnWidth); } void CDlgAlign::FillAlignAutoInfo() { int nRowIdx, nColIdx; CString strItemText; CRcp_RsAlignManager* pRcpRsAlignManager = NULL; CReviewRecipeEditorDlg* pDlg = (CReviewRecipeEditorDlg*)AfxGetMainWnd(); if(pDlg == NULL) return; pRcpRsAlignManager = pDlg->GetRsAlignManager(); if(pRcpRsAlignManager == NULL) return; nRowIdx = 1; nColIdx = 1; strItemText.Format(_T("%.3lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dTargetMin); m_ctrlGridAlignAutoInfo.SetItemText(nRowIdx, nColIdx++, strItemText); strItemText.Format(_T("%.3lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dTargetMax); m_ctrlGridAlignAutoInfo.SetItemText(nRowIdx, nColIdx++, strItemText); nRowIdx = 2; nColIdx = 1; strItemText.Format(_T("%.3lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dExposureMin); m_ctrlGridAlignAutoInfo.SetItemText(nRowIdx, nColIdx++, strItemText); strItemText.Format(_T("%.3lf"), pRcpRsAlignManager->GetRsRcpAlignInfo()->m_dExposureMax); m_ctrlGridAlignAutoInfo.SetItemText(nRowIdx, nColIdx++, strItemText); m_ctrlCheckAutoProcess.SetCheck(pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bAutoProcess); m_ctrlCheckEdgeAlignProcess.SetCheck(pRcpRsAlignManager->GetRsRcpAlignInfo()->m_bEdgeAlignProcess); m_ctrlGridAlignAutoInfo.Invalidate(FALSE); } void CDlgAlign::UpdateDialogData() { FillAlignFindInfo(); FillAlignLightInfo(); FillAlignAutoInfo(); FillAlignRotateInfo(); FillAlignImageInfo(); Invalidate(FALSE); } void CDlgAlign::OnBnClickedButton1() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } void CDlgAlign::OnBnClickedButtonRcpFindTest() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. }