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

405 lines
8.7 KiB
C++

#include "stdafx.h"
#include "UserDataDlg.h"
extern CMapStringToString *g_pMapData = NULL;
IMPLEMENT_DYNAMIC(CUserDataDlg, CDialog)
CUserDataDlg::CUserDataDlg(int nType,CWnd* pParent /*=NULL*/)
: CDialog(CUserDataDlg::IDD, pParent)
{
m_bReadOnly = FALSE;
m_bModified = FALSE;
m_nType = nType;
}
CUserDataDlg::~CUserDataDlg()
{
}
void CUserDataDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LISTUSERDATA, m_wndListUserData);
DDX_Control(pDX, IDC_BTNEW, m_wndBtnew);
DDX_Control(pDX, IDC_BTDEL, m_wndBtDel);
}
BEGIN_MESSAGE_MAP(CUserDataDlg, CDialog)
ON_BN_CLICKED(IDC_BTNEW, &CUserDataDlg::OnBnClickedBtnew)
ON_BN_CLICKED(IDC_BTDEL, &CUserDataDlg::OnBnClickedBtdel)
ON_BN_CLICKED(IDOK, &CUserDataDlg::OnBnClickedOk)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_SAVE, &CUserDataDlg::OnBnClickedSave)
END_MESSAGE_MAP()
BOOL CUserDataDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CBitmap bmp;
if (!bmp.LoadBitmap (IDB_BITMAPI))
{
AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAPI);
ASSERT (FALSE);
return FALSE;
}
BITMAP bmpObj;
bmp.GetBitmap (&bmpObj);
UINT nFlags = ILC_COLOR24 | ILC_MASK;
m_imageList.Create (16, bmpObj.bmHeight, nFlags, 0, 0);
m_imageList.Add (&bmp, RGB (255, 0, 0));
m_wndListUserData.InsertColumn(0,_T("名称"),LVCFMT_LEFT,100,100);
m_wndListUserData.InsertColumn(1,_T("内容"),LVCFMT_LEFT,200,200);
m_wndListUserData.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_wndBtnew.EnableWindow(FALSE);
m_wndBtDel.EnableWindow(FALSE);
if (!m_bReadOnly)
{
#ifndef HAITIAN
m_wndListUserData.SetColumnItemData(0,NULL,ET_Edit);
#endif
m_wndListUserData.SetColumnItemData(1,NULL,ET_Edit);
m_wndBtnew.EnableWindow(TRUE);
m_wndBtDel.EnableWindow(TRUE);
}
m_wndListUserData.SetImageList(&m_imageList,LVSIL_SMALL);
if(m_mapUserData.GetCount() == 0)
{
ReadDefaultData();
}
ShowUserData();
#ifdef HAITIAN
GetDlgItem(IDC_BTNEW)->ShowWindow(FALSE);
GetDlgItem(IDC_BTDEL)->ShowWindow(FALSE);
GetDlgItem(IDC_SAVE)->ShowWindow(FALSE);
#endif
return TRUE;
}
void CUserDataDlg::ShowUserData()
{
//1---Name:Val
int nCount = 0;
CString sKey,sVal,sTemp1,sTemp2;
for (POSITION ps = m_mapUserData.GetStartPosition();ps != NULL;)
{
m_mapUserData.GetNextAssoc(ps,sKey,sVal);
int nindex = sVal.Find(_T(':'));
if (nindex != -1)
{
sTemp1 = sVal.Mid(0,nindex);
sTemp2 = sVal.Mid(nindex + 1);//val
nCount = m_wndListUserData.GetItemCount();
m_wndListUserData.InsertItem(nCount,sTemp1,0);
m_wndListUserData.SetItemText(nCount,1,sTemp2);
}
}
}
void CUserDataDlg::SetUserData(CMapStringToString& mapData)
{
//1---Name:Val
int nCount = 0;
CString sKey,sVal,sTemp1,sTemp2;
for (POSITION ps = mapData.GetStartPosition();ps != NULL;)
{
mapData.GetNextAssoc(ps,sKey,sVal);
m_mapUserData.SetAt(sKey,sVal);
}
}
int CUserDataDlg::GetUserData(CMapStringToString& mapData)
{
CString sKey,sVal;
for (POSITION ps = m_mapUserData.GetStartPosition();ps != NULL;)
{
m_mapUserData.GetNextAssoc(ps,sKey,sVal);
mapData.SetAt(sKey,sVal);
}
return mapData.GetCount();
}
void CUserDataDlg::SetUserData(const SH_BIM_BLOCK &mapData)
{
m_mapUserData.RemoveAll();
SH_BIM_BLOCK::const_iterator it(mapData.begin());
CString sName, sVal;
for (int i = 0; it != mapData.end(); ++it, ++i)
{
sVal = it->first;
sVal += _T(':');
sVal += it->second;
sName.Format(_T("user%d"), i);
m_mapUserData.SetAt(sName, sVal);
}
}
void CUserDataDlg::GetUserData(SH_BIM_BLOCK &mapData)
{
mapData.clear();
CString sKey, sVal, sTemp1, sTemp2;
for (POSITION ps = m_mapUserData.GetStartPosition(); ps != NULL;)
{
m_mapUserData.GetNextAssoc(ps, sKey, sVal);
int nindex = sVal.Find(_T(':'));
if (nindex != -1)
{
sTemp1 = sVal.Mid(0, nindex);
sTemp2 = sVal.Mid(nindex + 1);//val
mapData.push_back(std::make_pair(sTemp1, sTemp2));
}
}
}
void CUserDataDlg::OnBnClickedBtnew()
{
int nCount = m_wndListUserData.GetItemCount();
m_wndListUserData.InsertItem(nCount,_T("名称"),0);
m_wndListUserData.SetItemText(nCount,1,_T("内容"));
m_bModified = TRUE;
}
void CUserDataDlg::OnBnClickedBtdel()
{
POSITION ps = m_wndListUserData.GetFirstSelectedItemPosition();
if (ps != NULL)
{
int nItem = m_wndListUserData.GetNextSelectedItem(ps);
if (nItem != -1)
{
m_wndListUserData.DeleteItem(nItem);
m_bModified = TRUE;
}
}
}
void CUserDataDlg::OnBnClickedOk()
{
m_bModified = TRUE;
m_mapUserData.RemoveAll();
CString sName,sVal,sKey;
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
{
sName = m_wndListUserData.GetItemText(i,0);
sVal = m_wndListUserData.GetItemText(i,1);
sName += _T(":");
sName += sVal;
sKey.Format(_T("user%d"),i);
m_mapUserData.SetAt(sKey,sName);
}
OnOK();
}
void CUserDataDlg::UpdateParameter()
{
if(g_pMapData == NULL)
{
g_pMapData = new CMapStringToString;
}
else
{
g_pMapData->RemoveAll();
}
m_bModified = TRUE;
m_mapUserData.RemoveAll();
CString sName,sVal,sKey;
CString szSurfaceTreatment = _T("");
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
{
sName = m_wndListUserData.GetItemText(i,0);
sVal = m_wndListUserData.GetItemText(i,1);
if(sName == _T("表面处理"))
szSurfaceTreatment = sVal;
}
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
{
sName = m_wndListUserData.GetItemText(i,0);
sVal = m_wndListUserData.GetItemText(i,1);
if(sName == _T("物料描述"))
{
if(sVal.Find(szSurfaceTreatment) == -1)
{
if(sVal.Find(_T(")")) != -1)
{
sVal.Replace(_T("$"),szSurfaceTreatment);
}
else
{
sVal += _T("(") + szSurfaceTreatment + _T(")");
}
}
}
sName += _T(":");
sName += sVal;
sKey.Format(_T("user%d"),i);
m_mapUserData.SetAt(sKey,sName);
g_pMapData->SetAt(sKey,sName);
}
}
void CUserDataDlg::OnCancel()
{
if(m_nType == 0)
return;
else
CDialog::OnCancel();
}
int CUserDataDlg::GetUserData_New(CMapStringToString& mapData)
{
m_mapUserData.RemoveAll();
CString sName,sVal,sKey;
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
{
sName = m_wndListUserData.GetItemText(i,0);
sVal = m_wndListUserData.GetItemText(i,1);
sName += _T(":");
sName += sVal;
sKey.Format(_T("user%d"),i);
m_mapUserData.SetAt(sKey,sName);
}
for (POSITION ps = m_mapUserData.GetStartPosition();ps != NULL;)
{
m_mapUserData.GetNextAssoc(ps,sKey,sVal);
mapData.SetAt(sKey,sVal);
}
return mapData.GetCount();
}
void CUserDataDlg::SaveDefaultData()
{
//m_mapUserData
//TCHAR szFile[MAX_PATH];
CString iniFile = FilePath::GetSysDir();
iniFile += _T("\\Pipe.ini");
if (_taccess(iniFile, 0x00) != 0x00)
{
return;
}
// if(FindFile(_T("Pipe.ini"), szFile))
// {
// DeleteFile(szFile);
// }
int nCount = m_mapUserData.GetCount();
CString szCount;
szCount.Format(_T("%d"),nCount);
CString szAppName;
szAppName = _T("UserData_Pipe");
if(m_nType == 1)
szAppName = _T("UserData_Equipment");
WritePrivateProfileString(szAppName,_T("Count"),szCount,iniFile);
CString sKey,sVal;
int nIndex = 0;
for (POSITION ps = m_mapUserData.GetStartPosition();ps != NULL;)
{
m_mapUserData.GetNextAssoc(ps,sKey,sVal);
WritePrivateProfileString(szAppName,sKey,sVal,iniFile);
nIndex++;
}
}
void CUserDataDlg::ReadDefaultData()
{
m_mapUserData.RemoveAll();
//TCHAR szFile[MAX_PATH];
CString iniFile = FilePath::GetSysDir();
iniFile += _T("\\Pipe.ini");
if (_taccess(iniFile, 0x00) != 0x00)
return;
// if(!FindFile(_T("Pipe.ini"), szFile))
// {
// return;
// }
CString szAppName;
szAppName = _T("UserData_Pipe");
if(m_nType == 1)
szAppName = _T("UserData_Equipment");
TCHAR szResult[_MAX_PATH];
GetPrivateProfileString(szAppName,_T("Count"),_T("0"),szResult,_MAX_PATH,iniFile);
int nCount = _ttoi(CString(szResult));
for (int i=0;i<nCount;i++)
{
CString sKey,sValue;
sKey.Format(_T("User%d"),i);
GetPrivateProfileString(szAppName,sKey,_T("0"),szResult,_MAX_PATH,iniFile);
if(m_nType == 1)
{
//编辑时,只读取字段,不读取默认值.
CString szTemp = szResult;
szTemp = szTemp.Mid(0,szTemp.Find(_T(":"))+1);
m_mapUserData.SetAt(sKey,szTemp);
}
else
{
m_mapUserData.SetAt(sKey,szResult);
}
}
}
void CUserDataDlg::OnDestroy()
{
CDialog::OnDestroy();
}
void CUserDataDlg::OnBnClickedSave()
{
GetUserData_New(m_mapUserData);
SaveDefaultData();
}
void CUserDataDlg::SetParameterValue(CString szStandard,CString szDesc,CString szModel)
{
CString sName,sVal,sKey;
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
{
sName = m_wndListUserData.GetItemText(i,0);
sVal = m_wndListUserData.GetItemText(i,1);
if(sName == _T("物料描述"))
{
m_wndListUserData.SetItemText(i,1,szDesc);
}
if(sName == _T("执行标准"))
{
m_wndListUserData.SetItemText(i,1,szStandard);
}
if(sName == _T("规格型号"))
{
m_wndListUserData.SetItemText(i,1,szModel);
}
}
}