// ioexpdlg.cpp : implementation file // #include "stdafx.h" #include "geomative.h" #include "ioexpdlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CIOExpDlg dialog extern HHOOK hHook; extern LRESULT __stdcall CBTHookProc(long nCode, WPARAM wParam, LPARAM lParam); CIOExpDlg::CIOExpDlg(CWnd* pParent /*=NULL*/) : CDialog(CIOExpDlg::IDD, pParent) { //{{AFX_DATA_INIT(CIOExpDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } CIOExpDlg::CIOExpDlg(INT_PTR* pRet, CWnd* pParent /*=NULL*/) : CDialog(CIOExpDlg::IDD, pParent) { m_pRet = pRet; } void CIOExpDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CIOExpDlg) DDX_Control(pDX, IDC_IO_EXP_TAB, m_ioTab); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CIOExpDlg, CDialog) //{{AFX_MSG_MAP(CIOExpDlg) ON_NOTIFY(TCN_SELCHANGE, IDC_IO_EXP_TAB, OnSelchangeIoExpTab) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CIOExpDlg message handlers BOOL CIOExpDlg::Create(UINT nID, CWnd* pParentWnd) { // TODO: Add your specialized code here and/or call the base class pParentWnd->EnableWindow(FALSE); return CDialog::Create(IDD, pParentWnd); } void CIOExpDlg::OnOK() { // TODO: Add extra validation here HTREEITEM hProItem = NULL; HTREEITEM hTzItem = NULL; HTREEITEM hTdItem = NULL; bool bSelDmsItem = false; bool bSelSptItem = false; TCHAR szFilePath[MAX_PATH + 1]; CString szCurFilePath; CString szCaption; int iIndex = (int)VAL_ZERO; hProItem = m_ioDmsDlg.m_dmsTree.GetRootItem(); while (NULL != hProItem) { if ((m_ioDmsDlg.m_dmsTree.GetCheck(hProItem) == TRUE)) { bSelDmsItem = true; break; } hTzItem = m_ioDmsDlg.m_dmsTree.GetChildItem(hProItem); while (NULL != hTzItem) { if (m_ioDmsDlg.m_dmsTree.GetCheck(hTzItem) == TRUE) { bSelDmsItem = true; break; } hTdItem = m_ioDmsDlg.m_dmsTree.GetChildItem(hTzItem); while(NULL != hTdItem) { if (m_ioDmsDlg.m_dmsTree.GetCheck(hTdItem) == TRUE) { bSelDmsItem = true; break; } hTdItem = m_ioDmsDlg.m_dmsTree.GetNextSiblingItem(hTdItem); } hTzItem = m_ioDmsDlg.m_dmsTree.GetNextSiblingItem(hTzItem); } hProItem = m_ioDmsDlg.m_dmsTree.GetNextSiblingItem(hProItem); } while (iIndex <= (m_ioSptDlg.m_sptList.GetItemCount() - 1)) { if (m_ioSptDlg.m_sptList.GetCheck(iIndex++)) { bSelSptItem = true; break; } } if (bSelDmsItem || bSelSptItem) { GetModuleFileName(NULL, szFilePath, MAX_PATH); (_tcsrchr(szFilePath, _T('\\')))[1] = 0; szCurFilePath.Empty(); szCurFilePath = szFilePath; CFileDialog dlgSaveFile(FALSE , _T("accdb"), NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR, _T("Access 2007 DataBase Files (*.accdb)|*.accdb||")); szCaption.Empty(); szCaption.LoadString(IDS_SAVE); dlgSaveFile.m_ofn.lpstrTitle = szCaption; dlgSaveFile.m_ofn.lpstrInitialDir = szCurFilePath; if (dlgSaveFile.DoModal() == IDOK) { m_szFileName.Empty(); m_szFileName = dlgSaveFile.GetPathName(); } else { return; } AfxGetMainWnd()->EnableWindow(); *m_pRet = RET_OK; } else { szCaption.Empty(); szCaption.LoadString(IDS_ITEM_NULL); hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL); MessageBox(szCaption, NULL, MB_ICONEXCLAMATION); } // CDialog::OnOK(); } void CIOExpDlg::OnCancel() { // TODO: Add extra cleanup here AfxGetMainWnd()->EnableWindow(); *m_pRet = RET_CANCEL; CDialog::OnCancel(); } BOOL CIOExpDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CString szLabel; CTabCtrl* pIOTab = NULL; szLabel.Empty(); szLabel.LoadString(IDS_DATA); ASSERT(!szLabel.IsEmpty()); m_ioTab.InsertItem(TAB_INDEX_DMS, szLabel); szLabel.Empty(); szLabel.LoadString(IDS_SCRIPT); ASSERT(!szLabel.IsEmpty()); m_ioTab.InsertItem(TAB_INDEX_SPT, szLabel); m_ioDmsDlg.Create(IDD_IO_EXP_DMS, GetDlgItem(IDC_IO_EXP_TAB)); m_ioSptDlg.Create(IDD_IO_EXP_SPT, GetDlgItem(IDC_IO_EXP_TAB)); pIOTab = (CTabCtrl*)GetDlgItem(IDC_IO_EXP_TAB); if ((NULL != pIOTab) && (VAL_ZERO != m_ioDmsDlg.GetSafeHwnd()) && (VAL_ZERO != m_ioSptDlg.GetSafeHwnd())) { CRect rect; pIOTab->GetClientRect(&rect); rect.top += 23; rect.bottom -= 4; rect.left += 4; rect.right -= 4; m_ioDmsDlg.MoveWindow(&rect); m_ioSptDlg.MoveWindow(&rect); } pIOTab = NULL; m_ioDmsDlg.ShowWindow(true); m_ioSptDlg.ShowWindow(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CIOExpDlg::OnSelchangeIoExpTab(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here int iCurSel = VAL_MINUS_ONE; iCurSel = m_ioTab.GetCurSel(); switch (iCurSel) { case TAB_INDEX_DMS: m_ioDmsDlg.ShowWindow(true); m_ioSptDlg.ShowWindow(false); break; case TAB_INDEX_SPT: m_ioDmsDlg.ShowWindow(false); m_ioSptDlg.ShowWindow(true); break; default: break; } m_ioTab.SetFocus(); *pResult = 0; } BOOL CIOExpDlg::DestroyWindow() { // TODO: Add your specialized code here and/or call the base class OnCancel(); return CDialog::DestroyWindow(); }