154 lines
3.4 KiB
C++
154 lines
3.4 KiB
C++
#include "stdafx.h"
|
|
#include "EarThwormDef.h"
|
|
#include "SMLOBJDlg.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CSMLOBJDlg, CDialog)
|
|
|
|
CSMLOBJDlg::CSMLOBJDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(IDD_SML_DLG, pParent)
|
|
, m_sCodeText(_T(""))
|
|
, m_sName(_T(""))
|
|
{
|
|
}
|
|
|
|
CSMLOBJDlg::~CSMLOBJDlg()
|
|
{
|
|
}
|
|
|
|
void CSMLOBJDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_EDIT2, m_wndName);
|
|
DDX_Control(pDX, IDC_EDIT1, m_wndCodes);
|
|
DDX_Control(pDX, IDC_LIST1, m_wndListVal);
|
|
DDX_Text(pDX, IDC_EDIT1, m_sCodeText);
|
|
DDX_Text(pDX, IDC_EDIT2, m_sName);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CSMLOBJDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CSMLOBJDlg::OnBnClickedOk)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CSMLOBJDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_wndListVal.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_SINGLEROW);
|
|
m_wndListVal.InsertColumn(0, _T("变量名"), LVCFMT_LEFT, 120);
|
|
m_wndListVal.InsertColumn(1, _T("变量值"), LVCFMT_LEFT, 140);
|
|
m_wndListVal.InsertColumn(3, _T("类型"), LVCFMT_LEFT,100);
|
|
|
|
m_wndListVal.SetColumnItemData(1, NULL, ET_Edit);
|
|
|
|
CString sLn;
|
|
for (int i = 0;i < m_CodeLines.GetSize();i++)
|
|
{
|
|
sLn = m_CodeLines.GetAt(i);
|
|
sLn += _T("\r\n");
|
|
m_sCodeText += sLn;
|
|
}
|
|
|
|
m_xData.GetAt(KEY_NAME, m_sName);
|
|
|
|
AecDbObjXDataMap::It it = m_xData.Begin();
|
|
AecDbObjXDataMap::It end = m_xData.End();
|
|
|
|
CString sKey;
|
|
AecXData xdata;
|
|
memset(&xdata, 0, sizeof(AecXData));
|
|
|
|
int nItem = 0;
|
|
TCHAR szData[MAX_PATH * 4];
|
|
|
|
for (; it != end; )
|
|
{
|
|
if (!m_xData.GetNext(it, sKey, xdata))
|
|
break;
|
|
|
|
switch (xdata.nVt)
|
|
{
|
|
case VT_I4: // 整型
|
|
{
|
|
nItem = m_wndListVal.InsertItem(m_wndListVal.GetItemCount(), sKey);
|
|
swprintf(szData, _T("%d"), (int)xdata.nVal);
|
|
m_wndListVal.SetItemText(nItem, 1, szData);
|
|
m_wndListVal.SetItemText(nItem, 2, _T("整数"));
|
|
break;
|
|
}
|
|
case VT_R8: // 浮点
|
|
{
|
|
nItem = m_wndListVal.InsertItem(m_wndListVal.GetItemCount(), sKey);
|
|
swprintf(szData, _T("%.6f"), xdata.dVal[0]);
|
|
m_wndListVal.SetItemText(nItem, 1, szData);
|
|
m_wndListVal.SetItemText(nItem, 2, _T("浮点数"));
|
|
break;
|
|
}
|
|
case VT_BSTR: // 字符串
|
|
{
|
|
//太长...多余的截掉
|
|
if (xdata.npszLen > MAX_PATH * 4)
|
|
{
|
|
wcsncpy(szData, xdata.pszVal, MAX_PATH * 4 - 4);
|
|
_tcscat(szData, _T("..."));
|
|
}
|
|
else
|
|
{
|
|
swprintf(szData, _T("%s"), xdata.pszVal);
|
|
}
|
|
nItem = m_wndListVal.InsertItem(m_wndListVal.GetItemCount(), sKey);
|
|
m_wndListVal.SetItemText(nItem, 1, szData);
|
|
m_wndListVal.SetItemText(nItem, 2, _T("字符串"));
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
UpdateData(FALSE);
|
|
return TRUE;
|
|
}
|
|
|
|
void CSMLOBJDlg::AddCodeLine(CString &sLine)
|
|
{
|
|
m_CodeLines.Add(sLine);
|
|
}
|
|
|
|
void CSMLOBJDlg::AddCodeLines(CStringArray &arLines)
|
|
{
|
|
m_CodeLines.Append(arLines);
|
|
}
|
|
|
|
void CSMLOBJDlg::SetXDataMap(const AecDbObjXDataMap *pMap)
|
|
{
|
|
m_xData.CopyFrom(pMap);
|
|
}
|
|
|
|
void CSMLOBJDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
CString sKey, sVal,sType;
|
|
for (int i = 0;i < m_wndListVal.GetItemCount();i++)
|
|
{
|
|
sKey = m_wndListVal.GetItemText(i, 0);
|
|
sVal = m_wndListVal.GetItemText(i, 1);
|
|
sType = m_wndListVal.GetItemText(i, 2);
|
|
|
|
if ( sType.CompareNoCase( _T("整数") ) == 0)
|
|
{
|
|
m_xData.SetAt(sKey, _ttoi(sVal));
|
|
}
|
|
else if (sType.CompareNoCase(_T("浮点数") ) == 0)
|
|
{
|
|
m_xData.SetAt(sKey, _ttof(sVal));
|
|
}
|
|
else if (sType.CompareNoCase(_T("字符串")) == 0)
|
|
{
|
|
m_xData.SetAt(sKey, sVal);
|
|
}
|
|
}
|
|
m_xData.SetAt(KEY_NAME, m_sName);
|
|
|
|
CDialog::OnOK();
|
|
}
|