#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