// DlgSignalWriteData.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "ReviewSystemSetting.h" #include "DlgSignalWriteData.h" #include "ReviewSystemSettingDlg.h" // CDlgSignalWriteData ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CDlgSignalWriteData, CDialog) CDlgSignalWriteData::CDlgSignalWriteData(CWnd* pParent /*=NULL*/) : CDialog(CDlgSignalWriteData::IDD, pParent) , m_nSignalWriteDataCount(0) { } CDlgSignalWriteData::~CDlgSignalWriteData() { } void CDlgSignalWriteData::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_SYS_SIGNAL_WRITE_DATA_COUNT, m_nSignalWriteDataCount); DDX_Control(pDX, IDC_CHECK_SYS_SIGNAL_WRITE_DATA_USE_CONSECUTIVE_ADDRESS, m_ctrlButtonUseConsecutiveAddress); DDX_Control(pDX, IDC_GRID_SIGNAL_WRITE_DATA_INFO, m_ctrlGridSignalWriteDataInfo); } BEGIN_MESSAGE_MAP(CDlgSignalWriteData, CDialog) ON_EN_CHANGE(IDC_EDIT_SYS_SIGNAL_WRITE_DATA_COUNT, &CDlgSignalWriteData::OnEnChangeEditSysSignalWriteDataCount) END_MESSAGE_MAP() // CDlgSignalWriteData ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CDlgSignalWriteData::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù. InitSignalWriteDataInfoGridControl(); FillSignalWriteDataInfo(); return TRUE; // return TRUE unless you set the focus to a control // ¿¹¿Ü: OCX ¼Ó¼º ÆäÀÌÁö´Â FALSE¸¦ ¹ÝÈ¯ÇØ¾ß ÇÕ´Ï´Ù. } BOOL CDlgSignalWriteData::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 CDlgSignalWriteData::OnEnChangeEditSysSignalWriteDataCount() { // TODO: RICHEDIT ÄÁÆ®·ÑÀÎ °æ¿ì, ÀÌ ÄÁÆ®·ÑÀº // CDialog::OnInitDialog() ÇÔ¼ö¸¦ ÀçÁöÁ¤ //ÇÏ°í ¸¶½ºÅ©¿¡ OR ¿¬»êÇÏ¿© ¼³Á¤µÈ ENM_CHANGE Ç÷¡±×¸¦ ÁöÁ¤ÇÏ¿© CRichEditCtrl().SetEventMask()¸¦ È£ÃâÇÏÁö ¾ÊÀ¸¸é // ÀÌ ¾Ë¸² ¸Þ½ÃÁö¸¦ º¸³»Áö ¾Ê½À´Ï´Ù. // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. UpdateData(TRUE); int i, nRowIdx, nColIdx; int nWidth, nMargin, nDataColumnWidth; CString strTemp; CRect rect; m_ctrlGridSignalWriteDataInfo.GetWindowRect(&rect); m_ctrlGridSignalWriteDataInfo.SetRowCount(m_nSignalWriteDataCount + 1); nWidth = m_ctrlGridSignalWriteDataInfo.GetColumnWidth(0); nMargin = 5; nDataColumnWidth = rect.Width() - nWidth - nMargin; if(m_nSignalWriteDataCount > 0) { GV_ITEM Item; Item.mask = GVIF_TEXT; nRowIdx = 1; nColIdx = 0; nDataColumnWidth = nDataColumnWidth / m_nSignalWriteDataCount; for(i = 0; i < m_nSignalWriteDataCount; i++) { //À妽º Item.row = nRowIdx++; Item.col = nColIdx; strTemp.Format(_T("%02d"), i); Item.strText = strTemp; m_ctrlGridSignalWriteDataInfo.SetItem(&Item); } } } void CDlgSignalWriteData::InitSignalWriteDataInfoGridControl() { int nRowIdx, nColIdx, nRows, nCols, nFixRows, nFixCols; int nMargin, nDefaultColumnWidth; CString strTemp; CRect rect; m_ctrlGridSignalWriteDataInfo.GetWindowRect(&rect); nMargin = 5; nDefaultColumnWidth = (rect.Width() - nMargin) / (SIGNAL_WRITE_DATA_INFO_GRID_COL_COUNT + 1); nRows = m_nSignalWriteDataCount + 1; nCols = SIGNAL_WRITE_DATA_INFO_GRID_COL_COUNT; nFixRows = 1; nFixCols = 1; nRowIdx = 0; nColIdx = 0; m_ctrlGridSignalWriteDataInfo.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0)); m_ctrlGridSignalWriteDataInfo.SetRowCount(nRows); m_ctrlGridSignalWriteDataInfo.SetColumnCount(nCols); m_ctrlGridSignalWriteDataInfo.SetFixedRowCount(nFixRows); m_ctrlGridSignalWriteDataInfo.SetFixedColumnCount(nFixCols); GV_ITEM Item; Item.mask = GVIF_TEXT; Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Index"));//_T("À妽º")); Item.strText = strTemp; m_ctrlGridSignalWriteDataInfo.SetColumnWidth(nColIdx++, nDefaultColumnWidth); m_ctrlGridSignalWriteDataInfo.SetItem(&Item); Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Item"));//_T("¾ÆÀÌÅÛ")); Item.strText = strTemp; m_ctrlGridSignalWriteDataInfo.SetColumnWidth(nColIdx++, nDefaultColumnWidth * 2); m_ctrlGridSignalWriteDataInfo.SetItem(&Item); Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Size"));//_T("Å©±â")); Item.strText = strTemp; m_ctrlGridSignalWriteDataInfo.SetColumnWidth(nColIdx++, nDefaultColumnWidth); m_ctrlGridSignalWriteDataInfo.SetItem(&Item); Item.row = nRowIdx; Item.col = nColIdx; strTemp.Format(_T("Address"));//_T("ÁÖ¼Ò")); Item.strText = strTemp; m_ctrlGridSignalWriteDataInfo.SetColumnWidth(nColIdx++, nDefaultColumnWidth); m_ctrlGridSignalWriteDataInfo.SetItem(&Item); } void CDlgSignalWriteData::FillSignalWriteDataInfo() { CReviewSystemSettingDlg* pDlg = (CReviewSystemSettingDlg*)AfxGetMainWnd(); if (pDlg==NULL) return; CSignalControlInfo* pSignalInfo = pDlg->GetSys_SignalInfo(); if (pSignalInfo==NULL) return; CString strItemText = _T(""); int nSignalWriteDataCount = pSignalInfo->GetSendDataAddressCount(); if(nSignalWriteDataCount > 0) { int nRowIdx = 1; m_nSignalWriteDataCount = nSignalWriteDataCount; UpdateData(FALSE); OnEnChangeEditSysSignalWriteDataCount(); BOOL bUseConsecutiveAddress = pSignalInfo->GetUseContinuousSendAddress(); m_ctrlButtonUseConsecutiveAddress.SetCheck(bUseConsecutiveAddress); for(int i=0; iGetSendDataAddress(i); if (pWriteDataInfo==NULL) continue; //1. ¾ÆÀÌÅÛ int nColIdx = 1; strItemText.Format(_T("%s"), pWriteDataInfo->strName); m_ctrlGridSignalWriteDataInfo.SetItemText(nRowIdx, nColIdx, strItemText); //2. Å©±â nColIdx++; strItemText.Format(_T("%d"), pWriteDataInfo->nSize); m_ctrlGridSignalWriteDataInfo.SetItemText(nRowIdx, nColIdx, strItemText); //3. ÁÖ¼Ò nColIdx++; strItemText.Format(_T("%s"), pWriteDataInfo->strAddr); m_ctrlGridSignalWriteDataInfo.SetItemText(nRowIdx, nColIdx, strItemText); nRowIdx++; } } else { ResetSignalWriteDataInfoGrid(); } } void CDlgSignalWriteData::ResetSignalWriteDataInfoGrid() { m_nSignalWriteDataCount = 0; UpdateData(FALSE); OnEnChangeEditSysSignalWriteDataCount(); m_ctrlButtonUseConsecutiveAddress.SetCheck(FALSE); } void CDlgSignalWriteData::UpdateDialogData() { FillSignalWriteDataInfo(); Invalidate(TRUE); } void CDlgSignalWriteData::GetSignalWriteData(CSignalControlInfo &signalInfo) { UpdateData(TRUE); signalInfo.SetUseContinuousSendAddress(m_ctrlButtonUseConsecutiveAddress.GetCheck()); int i, nRowIdx, nColIdx; CString strItemText; signalInfo.SetSendDataAddressCount(0); nRowIdx = 1; for(i = 0; i < m_nSignalWriteDataCount; i++) { nColIdx = 1; SSignalSettingData data; strItemText = m_ctrlGridSignalWriteDataInfo.GetItemText(nRowIdx, nColIdx++); data.strName = strItemText; strItemText = m_ctrlGridSignalWriteDataInfo.GetItemText(nRowIdx, nColIdx++); data.nSize = _ttoi(strItemText); strItemText = m_ctrlGridSignalWriteDataInfo.GetItemText(nRowIdx, nColIdx++); data.strAddr = strItemText; signalInfo.SetSendDataAddress(data); nRowIdx++; } }