Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

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();
}