////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2002 Microsoft Corporation. All rights reserved. // Copyright (c) 2002 OSR Open Systems Resources, Inc. // // PathDlg.cpp : implementation file ////////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include #include #include #include #include extern "C" { #include } #include #include "TraceView.h" #include "PathDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPathDlg IMPLEMENT_DYNAMIC(CPathDlg, CFileDialog) CPathDlg::CPathDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd *pParentWnd) : CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags |= OFN_ENABLETEMPLATE, lpszFilter, pParentWnd) { m_ofn.hInstance = AfxGetResourceHandle(); m_ofn.lpTemplateName = MAKEINTRESOURCE(CPathDlg::IDD); m_ofn.Flags &= ~OFN_EXPLORER; //{{AFX_DATA_INIT(CPathDlg) //}}AFX_DATA_INIT } void CPathDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPathDlg) DDX_Control(pDX, IDC_PATH_NAME_EDIT, m_PathName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPathDlg, CFileDialog) //{{AFX_MSG_MAP(CPathDlg) ON_WM_PAINT() //}}AFX_MSG_MAP END_MESSAGE_MAP() BOOL CPathDlg::OnInitDialog() { CString str; CenterWindow(); GetDlgItem(stc2)->ShowWindow(SW_HIDE); GetDlgItem(stc3)->ShowWindow(SW_HIDE); GetDlgItem(edt1)->ShowWindow(SW_HIDE); GetDlgItem(lst1)->ShowWindow(SW_HIDE); GetDlgItem(cmb1)->ShowWindow(SW_HIDE); GetDlgItem(stc1)->ShowWindow(SW_HIDE); GetDlgItem(chx1)->ShowWindow(SW_HIDE); GetDlgItem(psh15)->EnableWindow(FALSE); SetDlgItemText(edt1,_T("Junk")); // // Need to fill in edit control(IDC_PATH_NAME_EDIT) // CListBox* pList = (CListBox*)GetDlgItem(lst2); int iIndex = pList->GetCurSel(); m_pathName.Empty(); if(iIndex != LB_ERR) { pList->GetText(iIndex, str); for(int i = 0; i <= iIndex; i++) { pList->GetText(i, str); if(i > 1) { m_pathName += "\\"; m_pathName += str; } else { m_pathName += str; } } m_pathName.MakeUpper(); ((CEdit *)GetDlgItem(IDC_PATH_NAME_EDIT))->SetWindowText(m_pathName); } GetDlgItem(lst2)->SetFocus(); m_bFirstTime = TRUE; CFileDialog::OnInitDialog(); // // return FALSE to set the focus to a control // return FALSE; } void CPathDlg::OnPaint() { // // device context for painting // CPaintDC dc(this); if (m_bFirstTime) { m_bFirstTime = FALSE; SendDlgItemMessage(lst2, LB_SETCURSEL, 0, 0L); } // // Do not call CFileDialog::OnPaint() for painting messages // } void CPathDlg::OnLBSelChangedNotify(UINT nIDBox, UINT iCurSel, UINT nCode) { CString str; int i; CListBox* pList = (CListBox*)GetDlgItem(lst2); int iIndex = pList->GetCurSel(); m_pathName.Empty(); if (iIndex != LB_ERR) { pList->GetText(iIndex, str); for (i = 0; i <= iIndex; i++) { pList->GetText(i, str); if (i > 1) { m_pathName += "\\"; m_pathName += str; } else { m_pathName += str; } } ((CEdit*)GetDlgItem(IDC_PATH_NAME_EDIT))->SetWindowText(m_pathName); } } BOOL CPathDlg::OnFileNameOK(void) { CString drive; CString str; int retVal; m_PathName.GetWindowText(m_pathName); drive = m_pathName.Left(3); retVal = m_pathName.FindOneOf(_T("*?|/<>\"")); if (retVal >= 0) { str.Format(_T("%s is not a valid pathname."), m_pathName); AfxMessageBox(str); return TRUE; } if (_tchdir(m_pathName)) { str.Format(_T("Directory %s does not exist."), m_pathName); AfxMessageBox(str); return TRUE; } TCHAR buffer[MAX_PATH]; str = m_pathName + "\\" + m_ofn.lpstrFileTitle; _tcscpy(buffer, str); _tcscpy(m_ofn.lpstrFile, buffer); m_pofnTemp->nFileOffset = m_pathName.GetLength() + 1; m_pofnTemp->nFileExtension = (WORD)str.GetLength(); return FALSE; }