Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

158 lines
4.4 KiB
C++

// SaniWarePropDlg.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "SaniFittingAttrDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSaniFittingAttrDlg dialog
CSaniFittingAttrDlg::CSaniFittingAttrDlg(CWnd* pParent /*=NULL*/)
: CSaniFittingAttrBaseDlg(CSaniFittingAttrDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSaniFittingAttrDlg)
m_bMultiPlace = FALSE;
m_nComponentSpace = 0;
m_nDistToWall = 0;
m_nInitSpace = 0;
m_csKindName = _T("");
m_csDescName = _T("");
//}}AFX_DATA_INIT
}
void CSaniFittingAttrDlg::DoDataExchange(CDataExchange* pDX)
{
CSaniFittingAttrBaseDlg::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSaniFittingAttrDlg)
DDX_Check(pDX, IDC_CHECK_MULTIPLACE, m_bMultiPlace);
DDX_Text(pDX, IDC_EDIT_CSPACE, m_nComponentSpace);
DDX_Text(pDX, IDC_EDIT_DISTWALL, m_nDistToWall);
DDX_Text(pDX, IDC_EDIT_ISPACE, m_nInitSpace);
DDX_Text(pDX, IDC_EDIT_KIND, m_csKindName);
DDX_Text(pDX, IDC_EDIT_NAME, m_csDescName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSaniFittingAttrDlg, CSaniFittingAttrBaseDlg)
//{{AFX_MSG_MAP(CSaniFittingAttrDlg)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSaniFittingAttrDlg message handlers
// 从设备的数据中取数
BOOL CSaniFittingAttrDlg::SetFromSaniWare(const CSaniFittingAttr &data, BOOL bGetNextName)
{
m_bMultiPlace = (data.m_nPlaceFlag==0);
if(bGetNextName) {
XString sNextName, sDwbName;
sDwbName << g_sDwbPath <<_T("lvtry.dwb");
sNextName << data.m_csBlockName;
if(GetNextItem(sDwbName, sNextName)!=RTNORM)
return FALSE;
m_csBlockName = sNextName;
} else {
m_csBlockName = data.m_csBlockName;
}
m_csDescName = data.m_csDescName;
m_csKindName = data.m_csKindName;
m_nComponentSpace = AS_INT(data.m_dComponentSpace);
m_nDistToWall = AS_INT(data.m_dDistToWall);
m_nInitSpace = AS_INT(data.m_dInitSpace);
m_dOrigenalSizeX = data.m_dOrigenalSizeX;
m_dOrigenalSizeY = data.m_dOrigenalSizeY;
return TRUE;
}
XString Int2Char8(unsigned nIndex)
{
XString sIndex(_T("%d"), nIndex);
int nLen=(int)_tcslen(sIndex);
XString sRet;
int nSpace=8-nLen;
for(int i=0; i<nSpace; i++)
sRet << _T("0");
sRet << sIndex;
ASSERT(sRet.Length()==8);
return sRet;
}
//是否全部为数字
BOOL IsDigital(const TCHAR *pStr)
{
ASSERT(pStr);
int nLen=(int)_tcslen(pStr);
if(!nLen)
return FALSE;
for(int i=0; i<nLen; i++) {
if(!_istdigit(pStr[i]))
return FALSE;
}
return TRUE;
}
#if 0
int CSaniWarePropDlg::GetNextItem(const TCHAR *dwb, TCHAR *sld)
{
//extern BOOL IsDigital(const TCHAR *pStr);
XASLibMan lib(dwb, LZW_EXT, DWB_TITLE, ios::binary|ios::in);
XStringList recs;
if(!lib.GetAll(recs)) {
_tcscpy(sld, _T("00000001"));
return RTNORM;
}
TCHAR *maxStr=recs.MaxValue(0);
if(IsDigital(maxStr)) {
int nIndex=_ttoi(maxStr);
nIndex++;
XString sIndex=Int2Char8((unsigned)nIndex);
_tcscpy(sld, sIndex);
} else if(maxStr && _tcslen(maxStr)>3) {
int slen=_tcslen(maxStr);
TCHAR a1=maxStr[slen-1], a2=maxStr[slen-2], a3=maxStr[slen-3];
if(a1>=_T('0') && a1<_T('9')) a1++;
else if(a1==_T('9') && a2>=_T('0') && a2<_T('9')) { a1=_T('0'); a2++; }
else if(a1==_T('9') && a2==_T('9') && a3>=_T('0') && a3<_T('9')) { a1=a2=_T('0'); a3++; }
else {
a1++;
if(!_istalpha(a1) && !_istdigit(a1))
return RTERROR;
}
_tcscpy(sld, maxStr);
sld[slen-1]=a1; sld[slen-2]=a2; sld[slen-3]=a3;
} else {
_tcscpy(sld, _T("00000000"));
return RTERROR;
}
return RTNORM;
}
#endif
// 把数据写到设备中
BOOL CSaniFittingAttrDlg::WriteToSaniWare(CSaniFittingAttr &data) const
{
data.m_nPlaceFlag = !m_bMultiPlace;
data.m_csBlockName = m_csBlockName;
data.m_csDescName = m_csDescName;
data.m_csKindName = m_csKindName;
data.m_dComponentSpace = m_nComponentSpace;
data.m_dDistToWall = m_nDistToWall;
data.m_dInitSpace = m_nInitSpace;
data.m_dOrigenalSizeX = m_dOrigenalSizeX;
data.m_dOrigenalSizeY = m_dOrigenalSizeY;
return TRUE;
}