// DlgSideDimensionSetting.cpp : 备泅 颇老涝聪促. // #include "stdafx.h" #include "EdgeInspector_App.h" #include "DlgSideDimensionSetting.h" #include "afxdialogex.h" // CDlgSideDimensionSetting 措拳 惑磊涝聪促. IMPLEMENT_DYNAMIC(CDlgSideDimensionSetting, CDialogEx) CDlgSideDimensionSetting::CDlgSideDimensionSetting(CWnd* pParent /*=NULL*/) : CDialogEx(CDlgSideDimensionSetting::IDD, pParent) { m_pDlgRecipe = NULL; m_pGlassData = NULL; m_pSelectSideIdx = NULL; } CDlgSideDimensionSetting::~CDlgSideDimensionSetting() { } void CDlgSideDimensionSetting::DoDataExchange(CDataExchange* pDX) { DDX_Control(pDX, IDC_SIDE_DIMENSION_SETTING_LIST, m_SideDimensionSetting); DDX_Control(pDX, IDC_TOP_CORNER_DIMENSION_SETTING_LIST, m_TopCornerDimensionSetting); DDX_Control(pDX, IDC_BOT_CORNER_DIMENSION_SETTING_LIST, m_BotCornerDimensionSetting); CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CDlgSideDimensionSetting, CDialogEx) END_MESSAGE_MAP() BOOL CDlgSideDimensionSetting::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_KEYDOWN ) { if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE ) { ::TranslateMessage(pMsg); ::DispatchMessage(pMsg); return TRUE; // DO NOT process further } } return CDialog::PreTranslateMessage(pMsg); } void CDlgSideDimensionSetting::SetDlgRecipe(CGlassRecipe* pDlgRecipe) { m_pDlgRecipe = pDlgRecipe; UpdateRecipe(FALSE); } void CDlgSideDimensionSetting::UpdateRecipe(BOOL bGetData) { if(bGetData == FALSE) { Fill_SideDimensionSetting(bGetData); Fill_TopCornerDimensionSetting(bGetData); Fill_BotCornerDimensionSetting(bGetData); } else { Fill_SideDimensionSetting(bGetData); Fill_TopCornerDimensionSetting(bGetData); Fill_BotCornerDimensionSetting(bGetData); } } void CDlgSideDimensionSetting::RefreshSideUI(BOOL bReinitGrid /*=TRUE*/) { if (!m_pSelectSideIdx) { return; } const int nSideIdx = *m_pSelectSideIdx; const DimensionDir eDim = (DimensionDir)nSideIdx; m_bIsRipSide = (DIMENSION_A_RIP == eDim) || (DIMENSION_B_RIP == eDim) || (DIMENSION_C_RIP == eDim) || (DIMENSION_D_RIP == eDim); CString strTemp; strTemp.Format(_T("[%s] Dim. Setting"), g_SideName[nSideIdx]); SetDlgItemText(IDC_STATIC_TITLE, strTemp); strTemp.Format(_T("Top Corner [%s] Dim. Setting"), g_SideName[nSideIdx]); SetDlgItemText(IDC_STATIC_TITLE_TOP_CORNER, strTemp); strTemp.Format(_T("Bot Corner [%s] Dim. Setting"), g_SideName[nSideIdx]); SetDlgItemText(IDC_STATIC_TITLE_BOT_CORNER, strTemp); if (CWnd* p = GetDlgItem(IDC_BUTTON_CAL)) { p->EnableWindow(!m_bIsRipSide); } if (CWnd* p = GetDlgItem(IDC_BUTTON_GET_SIDE_RESULT)) { p->EnableWindow(!m_bIsRipSide); } if (bReinitGrid) { Init_SideDimensionSetting(); } } void CDlgSideDimensionSetting::Init_SideDimensionSetting() { if (m_SideDimensionSetting.GetSafeHwnd() == NULL) { return; } if (m_pSelectSideIdx == nullptr) { return; } auto ScaleX = [&](int px)->int { HDC hdc = ::GetDC(m_hWnd); const int dpi = GetDeviceCaps(hdc, LOGPIXELSX); ::ReleaseDC(m_hWnd, hdc); return MulDiv(px, dpi, 96); }; struct ColDef { int w; LPCTSTR name; }; static const ColDef kColsRip[] = { { 90, _T("No.") }, { 100, _T("Start Line To Y(um)") }, { 100, _T("Use Dim.") }, }; static const ColDef kColsNormal[] = { { 90, _T("No.") }, { 70, _T("Top Mark To Y(um)") }, { 70, _T("Use Dim.") }, { 70, _T("Thres") }, { 70, _T("Std(mm)") }, { 70, _T("Min(mm)") }, { 70, _T("Max(mm)") }, { 70, _T("Off(mm)") }, { 70, _T("Use Chamfer") }, { 70, _T("Std(mm)") }, { 70, _T("Min(mm)") }, { 70, _T("Max(mm)") }, }; const ColDef* cols = m_bIsRipSide ? kColsRip : kColsNormal; const int nCols = m_bIsRipSide ? (int)_countof(kColsRip) : (int)_countof(kColsNormal); const int nRows = 1; const int nFixRows = 1; const int nFixCols = 0; m_SideDimensionSetting.DeleteAllItems(); m_SideDimensionSetting.SetVirtualMode(FALSE); m_SideDimensionSetting.GetDefaultCell(TRUE, FALSE)->SetBackClr(g_nGridFixCellColor); m_SideDimensionSetting.GetDefaultCell(FALSE, TRUE)->SetBackClr(g_nGridFixCellColor); m_SideDimensionSetting.GetDefaultCell(FALSE, FALSE)->SetBackClr(g_nGridCellColor); m_SideDimensionSetting.SetFixedTextColor(g_nGridFixFontColor); m_SideDimensionSetting.SetRowCount(nRows); m_SideDimensionSetting.SetColumnCount(nCols); m_SideDimensionSetting.SetFixedRowCount(nFixRows); m_SideDimensionSetting.SetFixedColumnCount(nFixCols); if (CFont* pFont = m_SideDimensionSetting.GetFont()) { LOGFONT lf{}; pFont->GetLogFont(&lf); lf.lfItalic = 0; lf.lfWeight = FW_BOLD; _tcscpy_s(lf.lfFaceName, _T("Arial")); lf.lfHeight = 14; m_SideDimensionSetting.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); m_SideDimensionSetting.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); m_SideDimensionSetting.GetDefaultCell(FALSE, FALSE)->SetFont(&lf); m_SideDimensionSetting.GetDefaultCell(TRUE, TRUE)->SetFont(&lf); } for (int c = 0; c < nCols; ++c) { m_SideDimensionSetting.SetColumnWidth(c, ScaleX(cols[c].w)); m_SideDimensionSetting.SetItemText(0, c, cols[c].name); } m_SideDimensionSetting.SetFixedRowSelection(FALSE); m_SideDimensionSetting.SetFixedColumnSelection(FALSE); m_SideDimensionSetting.EnableSelection(TRUE); m_SideDimensionSetting.SetEditable(TRUE); m_SideDimensionSetting.SetRowResize(FALSE); m_SideDimensionSetting.SetColumnResize(FALSE); m_SideDimensionSetting.ExpandColumnsToFit(TRUE); } void CDlgSideDimensionSetting::Fill_SideDimensionSetting(BOOL bGetData) { if (m_SideDimensionSetting.GetSafeHwnd() == NULL) { return; } if (m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) { return; } int nSideIdx = *(m_pSelectSideIdx); if (nSideIdx < 0 || nSideIdx >= eRcp_SideRD_End) { return; } int c = 0; const int COL_NO = c++; const int COL_TOPMARK_Y = c++; const int COL_USE_DIM = c++; int COL_THRES = -1, COL_STD = -1, COL_MIN = -1, COL_MAX = -1, COL_OFF = -1; int COL_CHAMFER_USE = -1, COL_CH_STD = -1, COL_CH_MIN = -1, COL_CH_MAX = -1; if (!m_bIsRipSide) { COL_THRES = c++; COL_STD = c++; COL_MIN = c++; COL_MAX = c++; COL_OFF = c++; COL_CHAMFER_USE = c++; COL_CH_STD = c++; COL_CH_MIN = c++; COL_CH_MAX = c++; } // 单元格读写封装 auto SetCell = [&](int r, int col, LPCTSTR s) { m_SideDimensionSetting.SetItemText(r, col, s); }; auto SetCellInt = [&](int r, int col, int v) { CString t; t.Format(_T("%d"), v); SetCell(r, col, t); }; auto SetCellDouble = [&](int r, int col, double v, int prec = 3) { CString t; t.Format(_T("%.*f"), prec, v); SetCell(r, col, t); }; auto SetCellBool = [&](int r, int col, BOOL b) { CString t; t.Format(_T("%d"), b ? 1 : 0); SetCell(r, col, t); }; auto GetCellStr = [&](int r, int col)->CString { CString s = m_SideDimensionSetting.GetItemText(r, col); s.Trim(); return s; }; auto GetCellInt = [&](int r, int col, int def = 0)->int { CString s = GetCellStr(r, col); return s.IsEmpty() ? def : _wtoi(s); }; auto GetCellDouble = [&](int r, int col, double def = 0.0)->double { CString s = GetCellStr(r, col); return s.IsEmpty() ? def : _wtof(s); }; auto GetCellBool = [&](int r, int col)->BOOL { return GetCellInt(r, col, 0) ? TRUE : FALSE; }; m_SideDimensionSetting.SetRedraw(FALSE); CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; if (!bGetData) { const int nDimensionCount = max(0, min(pParam->m_nSideDimensionCount, MAX_SIDE_DIMENSION_MEASURE_COUNT)); m_SideDimensionSetting.SetRowCount(nDimensionCount + 1); for (int i = 0; i < nDimensionCount; ++i) { const int r = i + 1; // 1) No. CString no; no.Format(_T("S_D/C_%d"), i + 1); SetCell(r, COL_NO, no); // 2) Top Mark To Distance Y (um) SetCellInt(r, COL_TOPMARK_Y, pParam->m_nSideDimensionPos_TopMarkToDistance_um[i]); // 3) Use Dimension (0/1) SetCellBool(r, COL_USE_DIM, pParam->m_bSideDimension_Use[i]); if (!m_bIsRipSide) { // 4) Thres SetCellInt(r, COL_THRES, pParam->m_nSideDimensionSpec_Thres[i]); // 5-7) Std/Min/Max SetCellDouble(r, COL_STD, pParam->m_dSideDimensionSpec_mm_Std[i]); SetCellDouble(r, COL_MIN, pParam->m_dSideDimensionSpec_mm_Min[i]); SetCellDouble(r, COL_MAX, pParam->m_dSideDimensionSpec_mm_Max[i]); // 8) Offset SetCellDouble(r, COL_OFF, pParam->m_dSideDimensionSpec_mm_Off[i]); // 9) Chamfer Use SetCellBool(r, COL_CHAMFER_USE, pParam->m_bSideChamfer_Use[i]); // 10-12) Chamfer Std/Min/Max SetCellDouble(r, COL_CH_STD, pParam->m_dSideChamfer_Spec_mm_Std[i]); SetCellDouble(r, COL_CH_MIN, pParam->m_dSideChamfer_Spec_mm_Min[i]); SetCellDouble(r, COL_CH_MAX, pParam->m_dSideChamfer_Spec_mm_Max[i]); } } } else { int nDimensionCount = max(0, m_SideDimensionSetting.GetRowCount() - 1); nDimensionCount = min(nDimensionCount, MAX_SIDE_DIMENSION_MEASURE_COUNT); pParam->m_nSideDimensionCount = nDimensionCount; for (int i = 0; i < nDimensionCount; ++i) { const int r = i + 1; int col = COL_TOPMARK_Y; // 2) Top Mark To Distance Y (um) pParam->m_nSideDimensionPos_TopMarkToDistance_um[i] = GetCellInt(r, col++, pParam->m_nSideDimensionPos_TopMarkToDistance_um[i]); // 3) Use Dimension pParam->m_bSideDimension_Use[i] = GetCellBool(r, col++); if (!m_bIsRipSide) { // 4) Thres pParam->m_nSideDimensionSpec_Thres[i] = GetCellInt(r, col++, pParam->m_nSideDimensionSpec_Thres[i]); // 5-7) Std/Min/Max pParam->m_dSideDimensionSpec_mm_Std[i] = GetCellDouble(r, col++, pParam->m_dSideDimensionSpec_mm_Std[i]); pParam->m_dSideDimensionSpec_mm_Min[i] = GetCellDouble(r, col++, pParam->m_dSideDimensionSpec_mm_Min[i]); pParam->m_dSideDimensionSpec_mm_Max[i] = GetCellDouble(r, col++, pParam->m_dSideDimensionSpec_mm_Max[i]); // 8) Offset pParam->m_dSideDimensionSpec_mm_Off[i] = GetCellDouble(r, col++, pParam->m_dSideDimensionSpec_mm_Off[i]); // 9) Chamfer Use pParam->m_bSideChamfer_Use[i] = GetCellBool(r, col++); // 10-12) Chamfer Std/Min/Max pParam->m_dSideChamfer_Spec_mm_Std[i] = GetCellDouble(r, col++, pParam->m_dSideChamfer_Spec_mm_Std[i]); pParam->m_dSideChamfer_Spec_mm_Min[i] = GetCellDouble(r, col++, pParam->m_dSideChamfer_Spec_mm_Min[i]); pParam->m_dSideChamfer_Spec_mm_Max[i] = GetCellDouble(r, col++, pParam->m_dSideChamfer_Spec_mm_Max[i]); } } for (int k = nDimensionCount; k < MAX_SIDE_DIMENSION_MEASURE_COUNT; ++k) { pParam->m_nSideDimensionPos_TopMarkToDistance_um[k] = 0; pParam->m_bSideDimension_Use[k] = FALSE; pParam->m_nSideDimensionSpec_Thres[k] = 0; pParam->m_dSideDimensionSpec_mm_Std[k] = 0.0; pParam->m_dSideDimensionSpec_mm_Min[k] = 0.0; pParam->m_dSideDimensionSpec_mm_Max[k] = 0.0; pParam->m_dSideDimensionSpec_mm_Off[k] = 0.0; pParam->m_bSideChamfer_Use[k] = FALSE; pParam->m_dSideChamfer_Spec_mm_Std[k] = 0.0; pParam->m_dSideChamfer_Spec_mm_Min[k] = 0.0; pParam->m_dSideChamfer_Spec_mm_Max[k] = 0.0; } } m_SideDimensionSetting.SetRedraw(TRUE); m_SideDimensionSetting.Invalidate(FALSE); } void CDlgSideDimensionSetting::Fill_SideDimensionSetting_CurrentResult() { if(m_SideDimensionSetting.GetSafeHwnd() == NULL) return; if(m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) return; int nSideIdx = *(m_pSelectSideIdx); if(nSideIdx < 0 || eRcp_SideRD_End <= nSideIdx) return; CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; CString strTemp; int nRow = 0; int nCol = 0; int nDimensionCount = pParam->m_nSideDimensionCount; m_SideDimensionSetting.SetRowCount(nDimensionCount + 1); for(int i=0; im_nSideDimensionPos_TopMarkToDistance_um[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 3. Use Dimension strTemp.Format(_T("%d"), (int) pParam->m_bSideDimension_Use[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 4. Thres strTemp.Format(_T("%d"), (int)pParam->m_nSideDimensionSpec_Thres[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 5. Std double dCutLine_Result = m_pGlassData->GetSideData((DimensionDir) nSideIdx)->m_dSideMeasrue_CutLine_Result_mm[i]; strTemp.Format(_T("%.3f"), dCutLine_Result); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 6. Min strTemp.Format(_T("%.3f"), pParam->m_dSideDimensionSpec_mm_Min[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 7. Max strTemp.Format(_T("%.3f"), pParam->m_dSideDimensionSpec_mm_Max[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 8. Offset strTemp.Format(_T("%.3f"), pParam->m_dSideDimensionSpec_mm_Off[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 9. Chamfer strTemp.Format(_T("%d"), (int) pParam->m_bSideChamfer_Use[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 10. Std double dChamfer_Result = m_pGlassData->GetSideData((DimensionDir) nSideIdx)->m_dSideMeasrue_Chamfer_Result_mm[i]; strTemp.Format(_T("%.3f"), dChamfer_Result); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 11. Min strTemp.Format(_T("%.3f"), pParam->m_dSideChamfer_Spec_mm_Min[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 12. Max strTemp.Format(_T("%.3f"), pParam->m_dSideChamfer_Spec_mm_Max[i]); m_SideDimensionSetting.SetItemText(nRow, nCol++, strTemp); } m_SideDimensionSetting.Invalidate(); } void CDlgSideDimensionSetting::Init_TopCornerDimensionSetting() { if (m_TopCornerDimensionSetting.GetSafeHwnd() == NULL) return; int nRows = MAX_CORNER_DIMENSION_MEASURE_COUNT + 1; int nCols = 8 + 1; int nFixRows = 1; int nFixCols = 0; int nRowIdx = 0; int nColIdx = 0; m_TopCornerDimensionSetting.DeleteAllItems(); m_TopCornerDimensionSetting.SetVirtualMode(FALSE); m_TopCornerDimensionSetting.GetDefaultCell(TRUE, FALSE)->SetBackClr(g_nGridFixCellColor); m_TopCornerDimensionSetting.GetDefaultCell(FALSE, TRUE)->SetBackClr(g_nGridFixCellColor); m_TopCornerDimensionSetting.GetDefaultCell(FALSE, FALSE)->SetBackClr(g_nGridCellColor); m_TopCornerDimensionSetting.SetFixedTextColor(g_nGridFixFontColor); m_TopCornerDimensionSetting.SetRowCount(nRows); m_TopCornerDimensionSetting.SetColumnCount(nCols); m_TopCornerDimensionSetting.SetFixedRowCount(nFixRows); m_TopCornerDimensionSetting.SetFixedColumnCount(nFixCols); CFont *pFont = m_TopCornerDimensionSetting.GetFont(); if (pFont) { LOGFONT lf; pFont->GetLogFont(&lf); lf.lfItalic = 0; lf.lfHeight = 14; lf.lfWeight = FW_BOLD; _tcscpy_s(lf.lfFaceName, _T("Arial")); m_TopCornerDimensionSetting.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); m_TopCornerDimensionSetting.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); m_TopCornerDimensionSetting.GetDefaultCell(FALSE, FALSE)->SetFont(&lf); m_TopCornerDimensionSetting.GetDefaultCell(TRUE, TRUE)->SetFont(&lf); } // Col m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 100); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("No.")); m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 90); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Use Dim.")); m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Std(mm)")); m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Min(mm)")); m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Max(mm)")); m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 90); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Use Chamfer")); m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Std(mm)")); m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Min(mm)")); m_TopCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_TopCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Max(mm)")); m_TopCornerDimensionSetting.SetFixedRowSelection(FALSE); m_TopCornerDimensionSetting.SetFixedColumnSelection(FALSE); m_TopCornerDimensionSetting.EnableSelection(TRUE); m_TopCornerDimensionSetting.SetEditable(TRUE); m_TopCornerDimensionSetting.SetRowResize(FALSE); m_TopCornerDimensionSetting.SetColumnResize(FALSE); m_TopCornerDimensionSetting.ExpandColumnsToFit(TRUE); } void CDlgSideDimensionSetting::Fill_TopCornerDimensionSetting(BOOL bGetData) { if(m_TopCornerDimensionSetting.GetSafeHwnd() == NULL) return; if(m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) return; int nSideIdx = *(m_pSelectSideIdx); if(nSideIdx < 0 || eRcp_SideRD_End <= nSideIdx) return; CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; CString strTemp; int nRow = 0; int nCol = 0; if(bGetData == FALSE) { for(int i=0; im_bTopCornerDimension_Use[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 3. Std strTemp.Format(_T("%.3f"), pParam->m_dTopCornerDimensionSpec_mm_Std[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 4. Min strTemp.Format(_T("%.3f"), pParam->m_dTopCornerDimensionSpec_mm_Min[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 5. Max strTemp.Format(_T("%.3f"), pParam->m_dTopCornerDimensionSpec_mm_Max[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 6. Chamfer strTemp.Format(_T("%d"), (int) pParam->m_bTopCornerChamfer_Use[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 7. Std strTemp.Format(_T("%.3f"), pParam->m_dTopCornerChamfer_Spec_mm_Std[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 8. Min strTemp.Format(_T("%.3f"), pParam->m_dTopCornerChamfer_Spec_mm_Min[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 9. Max strTemp.Format(_T("%.3f"), pParam->m_dTopCornerChamfer_Spec_mm_Max[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); } m_TopCornerDimensionSetting.Invalidate(); } else { for(int i=0; im_bTopCornerDimension_Use[i] = (_wtoi(strTemp) == 0) ? FALSE : TRUE; // 3. Std strTemp = m_TopCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dTopCornerDimensionSpec_mm_Std[i] = _wtof(strTemp); // 4. Min strTemp = m_TopCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dTopCornerDimensionSpec_mm_Min[i] = _wtof(strTemp); // 5. Max strTemp = m_TopCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dTopCornerDimensionSpec_mm_Max[i] = _wtof(strTemp); // 6. Chamfer strTemp = m_TopCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_bTopCornerChamfer_Use[i] = (_wtoi(strTemp) == 0) ? FALSE : TRUE; // 7. Std strTemp = m_TopCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dTopCornerChamfer_Spec_mm_Std[i] = _wtof(strTemp); // 8. Min strTemp = m_TopCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dTopCornerChamfer_Spec_mm_Min[i] = _wtof(strTemp); // 9. Max strTemp = m_TopCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dTopCornerChamfer_Spec_mm_Max[i] = _wtof(strTemp); } } } void CDlgSideDimensionSetting::Fill_TopCornerDimensionSetting_CurrentResult() { if(m_TopCornerDimensionSetting.GetSafeHwnd() == NULL) return; if(m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) return; int nSideIdx = *(m_pSelectSideIdx); if(nSideIdx < 0 || eRcp_SideRD_End <= nSideIdx) return; CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; CString strTemp; int nRow = 0; int nCol = 0; for(int i=0; im_bTopCornerDimension_Use[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 3. Std double dCutLine_Result = m_pGlassData->GetSideData((DimensionDir) nSideIdx)->m_dTopCornerMeasrue_CutLine_Result_mm[i]; strTemp.Format(_T("%.3f"), dCutLine_Result); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 4. Min strTemp.Format(_T("%.3f"), pParam->m_dTopCornerDimensionSpec_mm_Min[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 5. Max strTemp.Format(_T("%.3f"), pParam->m_dTopCornerDimensionSpec_mm_Max[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 6. Chamfer strTemp.Format(_T("%d"), (int) pParam->m_bTopCornerChamfer_Use[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 7. Std double dChamfer_Result = m_pGlassData->GetSideData((DimensionDir) nSideIdx)->m_dTopCornerMeasrue_Chamfer_Result_mm[i]; strTemp.Format(_T("%.3f"), dChamfer_Result); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 8. Min strTemp.Format(_T("%.3f"), pParam->m_dTopCornerChamfer_Spec_mm_Min[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 9. Max strTemp.Format(_T("%.3f"), pParam->m_dTopCornerChamfer_Spec_mm_Max[i]); m_TopCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); } m_TopCornerDimensionSetting.Invalidate(); } void CDlgSideDimensionSetting::Init_BotCornerDimensionSetting() { if (m_BotCornerDimensionSetting.GetSafeHwnd() == NULL) return; int nRows = MAX_CORNER_DIMENSION_MEASURE_COUNT + 1; int nCols = 8 + 1; int nFixRows = 1; int nFixCols = 0; int nRowIdx = 0; int nColIdx = 0; m_BotCornerDimensionSetting.DeleteAllItems(); m_BotCornerDimensionSetting.SetVirtualMode(FALSE); m_BotCornerDimensionSetting.GetDefaultCell(TRUE, FALSE)->SetBackClr(g_nGridFixCellColor); m_BotCornerDimensionSetting.GetDefaultCell(FALSE, TRUE)->SetBackClr(g_nGridFixCellColor); m_BotCornerDimensionSetting.GetDefaultCell(FALSE, FALSE)->SetBackClr(g_nGridCellColor); m_BotCornerDimensionSetting.SetFixedTextColor(g_nGridFixFontColor); m_BotCornerDimensionSetting.SetRowCount(nRows); m_BotCornerDimensionSetting.SetColumnCount(nCols); m_BotCornerDimensionSetting.SetFixedRowCount(nFixRows); m_BotCornerDimensionSetting.SetFixedColumnCount(nFixCols); CFont *pFont = m_BotCornerDimensionSetting.GetFont(); if (pFont) { LOGFONT lf; pFont->GetLogFont(&lf); lf.lfItalic = 0; lf.lfHeight = 14; lf.lfWeight = FW_BOLD; _tcscpy_s(lf.lfFaceName, _T("Arial")); m_BotCornerDimensionSetting.GetDefaultCell(FALSE, TRUE)->SetFont(&lf); m_BotCornerDimensionSetting.GetDefaultCell(TRUE, FALSE)->SetFont(&lf); m_BotCornerDimensionSetting.GetDefaultCell(FALSE, FALSE)->SetFont(&lf); m_BotCornerDimensionSetting.GetDefaultCell(TRUE, TRUE)->SetFont(&lf); } // Col m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 100); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("No.")); m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 90); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Use Dim")); m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Std (mm)")); m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Min (mm)")); m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Max (mm)")); m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 90); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Use Chamfer")); m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Std (mm)")); m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Min (mm)")); m_BotCornerDimensionSetting.SetColumnWidth(nColIdx, 80); m_BotCornerDimensionSetting.SetItemText(nRowIdx, nColIdx++, _T("Max (mm)")); m_BotCornerDimensionSetting.SetFixedRowSelection(FALSE); m_BotCornerDimensionSetting.SetFixedColumnSelection(FALSE); m_BotCornerDimensionSetting.EnableSelection(TRUE); m_BotCornerDimensionSetting.SetEditable(TRUE); m_BotCornerDimensionSetting.SetRowResize(FALSE); m_BotCornerDimensionSetting.SetColumnResize(FALSE); m_BotCornerDimensionSetting.ExpandColumnsToFit(TRUE); } void CDlgSideDimensionSetting::Fill_BotCornerDimensionSetting(BOOL bGetData) { if(m_BotCornerDimensionSetting.GetSafeHwnd() == NULL) return; if(m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) return; int nSideIdx = *(m_pSelectSideIdx); if(nSideIdx < 0 || eRcp_SideRD_End <= nSideIdx) return; CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; CString strTemp; int nRow = 0; int nCol = 0; if(bGetData == FALSE) { for(int i=0; im_bBottomCornerDimension_Use[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 3. Std strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerDimensionSpec_mm_Std[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 4. Min strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerDimensionSpec_mm_Min[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 5. Max strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerDimensionSpec_mm_Max[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 6. Chamfer strTemp.Format(_T("%d"), (int) pParam->m_bBottomCornerChamfer_Use[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 7. Std strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerChamfer_Spec_mm_Std[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 8. Min strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerChamfer_Spec_mm_Min[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 9. Max strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerChamfer_Spec_mm_Max[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); } m_BotCornerDimensionSetting.Invalidate(); } else { for(int i=0; im_bBottomCornerDimension_Use[i] = (_wtoi(strTemp) == 0) ? FALSE : TRUE; // 3. Std strTemp = m_BotCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dBottomCornerDimensionSpec_mm_Std[i] = _wtof(strTemp); // 4. Min strTemp = m_BotCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dBottomCornerDimensionSpec_mm_Min[i] = _wtof(strTemp); // 5. Max strTemp = m_BotCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dBottomCornerDimensionSpec_mm_Max[i] = _wtof(strTemp); // 6. Chamfer strTemp = m_BotCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_bBottomCornerChamfer_Use[i] = (_wtoi(strTemp) == 0) ? FALSE : TRUE; // 7. Std strTemp = m_BotCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dBottomCornerChamfer_Spec_mm_Std[i] = _wtof(strTemp); // 8. Min strTemp = m_BotCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dBottomCornerChamfer_Spec_mm_Min[i] = _wtof(strTemp); // 9. Max strTemp = m_BotCornerDimensionSetting.GetItemText(nRow, nCol++); pParam->m_dBottomCornerChamfer_Spec_mm_Max[i] = _wtof(strTemp); } } } void CDlgSideDimensionSetting::Fill_BotCornerDimensionSetting_CurrentResult() { if(m_BotCornerDimensionSetting.GetSafeHwnd() == NULL) return; if(m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) return; int nSideIdx = *(m_pSelectSideIdx); if(nSideIdx < 0 || eRcp_SideRD_End <= nSideIdx) return; CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; CString strTemp; int nRow = 0; int nCol = 0; for(int i=0; im_bBottomCornerDimension_Use[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 3. Std double dCutLine_Result = m_pGlassData->GetSideData((DimensionDir) nSideIdx)->m_dBotCornerMeasrue_CutLine_Result_mm[i]; strTemp.Format(_T("%.3f"), dCutLine_Result); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 4. Min strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerDimensionSpec_mm_Min[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 5. Max strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerDimensionSpec_mm_Max[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 6. Chamfer strTemp.Format(_T("%d"), (int) pParam->m_bBottomCornerChamfer_Use[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 7. Std double dChamfer_Result = m_pGlassData->GetSideData((DimensionDir) nSideIdx)->m_dBotCornerMeasrue_Chamfer_Result_mm[i]; strTemp.Format(_T("%.3f"), dChamfer_Result); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 8. Min strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerChamfer_Spec_mm_Min[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); // 9. Max strTemp.Format(_T("%.3f"), pParam->m_dBottomCornerChamfer_Spec_mm_Max[i]); m_BotCornerDimensionSetting.SetItemText(nRow, nCol++, strTemp); } m_BotCornerDimensionSetting.Invalidate(); } BOOL CDlgSideDimensionSetting::OnInitDialog() { CDialogEx::OnInitDialog(); Init_SideDimensionSetting(); Init_TopCornerDimensionSetting(); Init_BotCornerDimensionSetting(); return TRUE; } BEGIN_EVENTSINK_MAP(CDlgSideDimensionSetting, CDialogEx) ON_EVENT(CDlgSideDimensionSetting, IDC_BUTTON_ADD, DISPID_CLICK, CDlgSideDimensionSetting::ClickButtonAdd, VTS_NONE) ON_EVENT(CDlgSideDimensionSetting, IDC_BUTTON_DEL, DISPID_CLICK, CDlgSideDimensionSetting::ClickButtonDel, VTS_NONE) ON_EVENT(CDlgSideDimensionSetting, IDC_BUTTON_CAL, DISPID_CLICK, CDlgSideDimensionSetting::ClickButtonCal, VTS_NONE) ON_EVENT(CDlgSideDimensionSetting, IDC_BUTTON_GET_SIDE_RESULT, DISPID_CLICK, CDlgSideDimensionSetting::ClickButtonGetSideResult, VTS_NONE) ON_EVENT(CDlgSideDimensionSetting, IDC_BUTTON_GET_TOP_CORNER_RESULT, DISPID_CLICK, CDlgSideDimensionSetting::ClickButtonGetTopCornerResult, VTS_NONE) ON_EVENT(CDlgSideDimensionSetting, IDC_BUTTON_GET_BOT_CORNER_RESULT, DISPID_CLICK, CDlgSideDimensionSetting::ClickButtonGetBotCornerResult, VTS_NONE) END_EVENTSINK_MAP() void CDlgSideDimensionSetting::ClickButtonAdd() { if (m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) { return; } int nSideIdx = *(m_pSelectSideIdx); if (nSideIdx < 0 || eRcp_SideRD_End <= nSideIdx) { return; } CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; int nAddIdx = pParam->m_nSideDimensionCount; if(nAddIdx < 0 || MAX_SIDE_DIMENSION_MEASURE_COUNT <= nAddIdx) { CString strMsg; strMsg.Format(_T("Max Dimension Measure Count : %d ea"), MAX_SIDE_DIMENSION_MEASURE_COUNT); AfxMessageBox(strMsg); return; } UpdateRecipe(TRUE); pParam->m_nSideDimensionPos_TopMarkToDistance_um[nAddIdx] = 0; pParam->m_dSideDimensionSpec_mm_Min[nAddIdx] = 0; pParam->m_dSideDimensionSpec_mm_Max[nAddIdx] = 0; pParam->m_dSideDimensionSpec_mm_Off[nAddIdx] = 0; pParam->m_nSideDimensionCount = nAddIdx + 1; UpdateRecipe(FALSE); } void CDlgSideDimensionSetting::ClickButtonDel() { if (m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) { return; } int nSideIdx = *(m_pSelectSideIdx); if (nSideIdx < 0 || eRcp_SideRD_End <= nSideIdx) { return; } CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; int nSideDimensionCount = pParam->m_nSideDimensionCount; CCellID FocusedID = m_SideDimensionSetting.GetFocusCell(); int nDelIdx = FocusedID.row - 1; if(nDelIdx < 0 || nSideDimensionCount <= nDelIdx) { AfxMessageBox(_T("Select Error")); return; } UpdateRecipe(TRUE); int nPosIdx = 0; for(int i=0; im_nSideDimensionPos_TopMarkToDistance_um[nPosIdx] = pParam->m_nSideDimensionPos_TopMarkToDistance_um[i]; pParam->m_dSideDimensionSpec_mm_Min[nPosIdx] = pParam->m_dSideDimensionSpec_mm_Min[i]; pParam->m_dSideDimensionSpec_mm_Max[nPosIdx] = pParam->m_dSideDimensionSpec_mm_Max[i]; pParam->m_dSideDimensionSpec_mm_Off[nPosIdx] = pParam->m_dSideDimensionSpec_mm_Off[i]; nPosIdx++; } pParam->m_nSideDimensionCount = nSideDimensionCount - 1; UpdateRecipe(FALSE); } void CDlgSideDimensionSetting::ClickButtonCal() { UpdateRecipe(TRUE); if(m_pDlgRecipe == NULL || m_pSelectSideIdx == NULL) return; int nSideIdx = *(m_pSelectSideIdx); if(nSideIdx < 0 || eRcp_SideRD_End <= nSideIdx) return; CSIDE_PARM* pParam = &m_pDlgRecipe->m_SideParam[nSideIdx]; int nSideDimensionCount = pParam->m_nSideDimensionCount; if(nSideDimensionCount < 2) { AfxMessageBox(_T("Error, Count < 2")); return; } int nStart = pParam->m_nSideDimensionPos_TopMarkToDistance_um[0]; int nEnd = pParam->m_nSideDimensionPos_TopMarkToDistance_um[nSideDimensionCount -1]; if((nEnd - nStart) == 0) { AfxMessageBox(_T("End - Start is 0")); return; } double dStep = (double)((nEnd - nStart)) / (double)((nSideDimensionCount-1)); for(int i=0; im_nSideDimensionPos_TopMarkToDistance_um[i] = (nStart + (int)((dStep * i))); } UpdateRecipe(FALSE); } void CDlgSideDimensionSetting::ClickButtonGetSideResult() { if(m_pGlassData == NULL) return; if(IDYES != AfxMessageBox(_T("Set Current Result ?"), MB_YESNO)) return; Fill_SideDimensionSetting_CurrentResult(); } void CDlgSideDimensionSetting::ClickButtonGetTopCornerResult() { if(m_pGlassData == NULL) return; if(IDYES != AfxMessageBox(_T("Set Current Result ?"), MB_YESNO)) return; Fill_TopCornerDimensionSetting_CurrentResult(); } void CDlgSideDimensionSetting::ClickButtonGetBotCornerResult() { if(m_pGlassData == NULL) return; if(IDYES != AfxMessageBox(_T("Set Current Result ?"), MB_YESNO)) return; Fill_BotCornerDimensionSetting_CurrentResult(); }