// 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; i<nSignalWriteDataCount; i++)
|
{
|
SSignalSettingData *pWriteDataInfo = pSignalInfo->GetSendDataAddress(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++;
|
}
|
}
|