244 lines
5.3 KiB
C++
244 lines
5.3 KiB
C++
// 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();
|
|
}
|