// SaveSpcFilePath.cpp : implementation file // #include "stdafx.h" #include "geomative.h" #include "SaveSpcFilePath.h" #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CSaveSpcFilePath dialog extern int g_iUILanguage; CSaveSpcFilePath::CSaveSpcFilePath(CWnd* pParent /*=NULL*/) : CDialog(CSaveSpcFilePath::IDD, pParent) { //{{AFX_DATA_INIT(CSaveSpcFilePath) m_FilePath = _T(""); //}}AFX_DATA_INIT m_iCurSel = -1; m_ucResFlag = 0; m_ProjectName = _T(""); m_ZoneName = _T(""); } void CSaveSpcFilePath::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSaveSpcFilePath) DDX_Control(pDX, IDC_COMBO_MODEL, m_cmdSaveModel); DDX_Text(pDX, IDC_EDIT_FILE_PATH, m_FilePath); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSaveSpcFilePath, CDialog) //{{AFX_MSG_MAP(CSaveSpcFilePath) ON_BN_CLICKED(IDC_BUTTON_BROWSE, OnButtonBrowse) ON_CBN_SELCHANGE(IDC_COMBO_MODEL, OnSelchangeComboModel) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSaveSpcFilePath message handlers BOOL CSaveSpcFilePath::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here bSig = TRUE; m_cmdSaveModel.AddString(_T("bore-hole")); m_cmdSaveModel.AddString(_T("common")); //初始化控件内容 GetDlgItem(IDC_CHECK_DAT)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK_URF)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK_EXCEL)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK_TXT)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK_EXCEL)->ShowWindow(SW_HIDE); GetDlgItem(IDC_CHECK_TXT)->EnableWindow(SW_HIDE); for (int n = 0; n < m_TypeArray.GetSize(); n++) { if (m_TypeArray.GetAt(n) == "Dat") { GetDlgItem(IDC_CHECK_DAT)->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_CHECK_DAT)))->SetCheck(BST_CHECKED); continue; } if (m_TypeArray.GetAt(n) == "Excel") { GetDlgItem(IDC_CHECK_EXCEL)->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_CHECK_EXCEL)))->SetCheck(BST_UNCHECKED); continue; } if (m_TypeArray.GetAt(n) == "Txt") { GetDlgItem(IDC_CHECK_TXT)->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_CHECK_TXT)))->SetCheck(BST_CHECKED); } if (m_TypeArray.GetAt(n) == "Urf") { GetDlgItem(IDC_CHECK_URF)->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_CHECK_URF)))->SetCheck(BST_CHECKED); } } if (m_FilePath.IsEmpty()) { // m_FilePath = m_CurrentPath + "\\" + _T("Data") + "\\" + m_ProjectName + "\\" + m_ZoneName + "\\"; m_FilePath = m_CurrentPath + "\\" + _T("Data") + "\\" + m_ProjectName + "\\"; } m_cmdSaveModel.SetCurSel(1); m_iCurSel = m_cmdSaveModel.GetCurSel(); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CSaveSpcFilePath::OnButtonBrowse() { // TODO: Add your control notification handler code here CString szResult = _T(""); szResult = GetFilePath(); if (szResult != "null") { m_FilePath.Empty(); m_FilePath = szResult+_T("\\"); UpdateData(FALSE); } } CString CSaveSpcFilePath::GetFilePath() { LPITEMIDLIST rootLoation; BROWSEINFO bi; TCHAR targetPath[ MAX_PATH ]; // static TCHAR targetPath2[ MAX_PATH ]; SHGetSpecialFolderLocation( NULL, CSIDL_DESKTOP, &rootLoation ); ZeroMemory( &bi, sizeof( bi ) ); bi.pidlRoot = rootLoation; bi.lpszTitle = _T( "保存路径" ); LPITEMIDLIST targetLocation = SHBrowseForFolder( &bi ); if ( targetLocation != NULL ) { SHGetPathFromIDList( targetLocation, targetPath ); CString szPath(targetPath); bSig = TRUE;//表示使用自定义路径 return szPath; } else { return "null"; } } void CSaveSpcFilePath::OnOK() { // TODO: Add extra validation here UpdateData(TRUE); if (!MakeSureDirectoryPathExists(m_FilePath.GetBuffer(m_FilePath.GetLength()))) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("路径被占用,请关闭!")); else MessageBoxEx(NULL, _T("The Path is occupy, Please Close it"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (m_cmdSaveModel.GetCurSel() == -1) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("请先选择文件类型")); else MessageBoxEx(NULL, _T("Please select file modele firstly."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } m_ucResFlag = 0; if (BST_CHECKED == ((CButton*)(GetDlgItem(IDC_CHECK_DAT)))->GetCheck()) { m_ucResFlag = m_ucResFlag | 0x01; } if (BST_CHECKED == ((CButton*)(GetDlgItem(IDC_CHECK_EXCEL)))->GetCheck()) { m_ucResFlag = m_ucResFlag | 0x02; } if (BST_CHECKED == ((CButton*)(GetDlgItem(IDC_CHECK_TXT)))->GetCheck()) { m_ucResFlag = m_ucResFlag | 0x04; } if (BST_CHECKED == ((CButton*)(GetDlgItem(IDC_CHECK_URF)))->GetCheck()) { m_ucResFlag = m_ucResFlag | 0x08; } if (0 == m_ucResFlag) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("路请选择文件类型!")); else MessageBoxEx(NULL, _T("Please select file type!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } m_szFileName = m_FilePath + m_TaskName; m_iCurSel = m_cmdSaveModel.GetCurSel(); CDialog::OnOK(); } void CSaveSpcFilePath::OnSelchangeComboModel() { // TODO: Add your control notification handler code here int iCurSel = m_cmdSaveModel.GetCurSel(); if (m_iCurSel == iCurSel) { return; } if ( 0 == m_cmdSaveModel.GetCurSel()) { ((CButton*)(GetDlgItem(IDC_CHECK_DAT)))->SetCheck(BST_CHECKED); ((CButton*)(GetDlgItem(IDC_CHECK_URF)))->SetCheck(BST_UNCHECKED); ((CButton*)(GetDlgItem(IDC_CHECK_TXT)))->SetCheck(BST_CHECKED); (GetDlgItem(IDC_CHECK_URF))->EnableWindow(FALSE); } else if (1 == m_cmdSaveModel.GetCurSel()) { ((CButton*)(GetDlgItem(IDC_CHECK_DAT)))->SetCheck(BST_CHECKED); ((CButton*)(GetDlgItem(IDC_CHECK_URF)))->SetCheck(BST_CHECKED); ((CButton*)(GetDlgItem(IDC_CHECK_TXT)))->SetCheck(BST_CHECKED); (GetDlgItem(IDC_CHECK_URF))->EnableWindow(TRUE); } }