www.pudn.com > gpsCE080506.rar > PathDlg.cpp


// PathDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "gps.h" 
#include "PathDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPathDlg dialog 
 
 
CPathDlg::CPathDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CPathDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CPathDlg) 
	treeNum=0; 
	m_path = _T(""); 
	m_navStart = 0; 
	//}}AFX_DATA_INIT 
 
	treeNum=0; 
	isActiveRe=0; 
} 
 
 
void CPathDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CPathDlg) 
	DDX_Control(pDX, IDC_TREE1, m_tree); 
	DDX_Text(pDX, IDC_EDIT1, m_path); 
	DDX_Check(pDX, IDC_CHECK1, m_navStart); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CPathDlg, CDialog) 
	//{{AFX_MSG_MAP(CPathDlg) 
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1) 
	ON_WM_CREATE() 
	ON_WM_ERASEBKGND() 
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1) 
	ON_WM_PAINT() 
	ON_WM_CTLCOLOR() 
	ON_BN_CLICKED(IDC_CHECK1, OnCheck1) 
	ON_WM_LBUTTONDOWN() 
	ON_WM_LBUTTONUP() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPathDlg message handlers 
 
BOOL CPathDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
 
	htreemain=m_tree.InsertItem(_T("Storage Card"),NULL,NULL,NULL,TVI_LAST); 
	directory="\\Storage Card\\"; 
 
		HANDLE  hFind=FindFirstFile(_T("\\Storage Card\\*.*"),&lpFileData);//查找文件夹下的exe文件 
		if(hFind!=INVALID_HANDLE_VALUE) 
		{ 
		   do{ 
				if(lpFileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) 
				{//查找文件夹   
					htree[treeNum]=m_tree.InsertItem(lpFileData.cFileName,NULL,NULL,htreemain,TVI_LAST); 
					treeNum++; 
 
					HANDLE  hFindNext=FindFirstFile(directory+lpFileData.cFileName+_T("\\*.exe"),&lpFileDataNext); 
					if(hFindNext!=INVALID_HANDLE_VALUE) 
					{ 
						do{//查找文件夹下面的文件 
							m_tree.InsertItem(lpFileDataNext.cFileName,NULL,NULL,htree[treeNum-1],TVI_LAST); 
						} 
						while(FindNextFile(hFindNext,&lpFileDataNext)); 
					}			 
 
				} 
		   }while(FindNextFile(hFind,&lpFileData)); 
		} 
 
		hFind=FindFirstFile(_T("\\Storage Card\\*.exe"),&lpFileData);//查找exe文件 
		if(hFind!=INVALID_HANDLE_VALUE) 
		{ 
		   do{ 
				htree[treeNum]=m_tree.InsertItem(lpFileData.cFileName,NULL,NULL,htreemain,TVI_LAST); 
				treeNum++; 
		   }while(FindNextFile(hFind,&lpFileData)); 
		} 
		 
 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CPathDlg::OnButton1()  
{ 
	CDialog::OnCancel();	 
} 
 
int CPathDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)  
{ 
	 
	RECT rect; 
	rect.left=0;rect.top=0;rect.right=150;rect.bottom=150; 
	m_tree.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT ,rect,this,102); 
	 
    CFont font; 
	font.CreatePointFont(180,L"宋体"); 
	m_tree.SetFont(&font,TRUE); 
 
	return CDialog::OnCreate(lpCreateStruct); 
} 
 
BOOL CPathDlg::OnEraseBkgnd(CDC* pDC)  
{ 
	//return -1; 
	return CDialog::OnEraseBkgnd(pDC); 
} 
 
void CPathDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
//	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; 
	HTREEITEM TreeItem=m_tree.GetSelectedItem(); 
	pathName=m_tree.GetItemText(TreeItem);  
 
	if(TreeItem==htreemain)//如果是根目录 
		pathStr="\\Storage Card"; 
	else 
	{ 
		if(m_tree.GetParentItem(TreeItem)) 
		{ 
			CString parentStr=m_tree.GetItemText(m_tree.GetParentItem(TreeItem)); 
			if(m_tree.GetParentItem(TreeItem)==htreemain)//如果是根目录下的第一级文件 
			{ 
				pathStr="\\"+parentStr+"\\"+pathName; 
 
			} 
			else 
			{ 
				pathStr="\\Storage Card\\"+parentStr+"\\"+pathName; 
			} 
			 
		} 
		else 
			pathStr=pathName; 
	} 
 
	m_path=pathStr; 
 
	UpdateData(false); 
} 
 
void CPathDlg::OnPaint()  
{ 
 	CPaintDC dc(this); // device context for painting 
	CBitmap	bitmap; 
    BITMAP  bmp; 
	CDC     memDC; 
    CFont font; 
    CRect rect; 
 
	bitmap.LoadBitmap(IDB_BITMAP1);//IDB_NAV 
	bitmap.GetObject (sizeof(BITMAP),&bmp); 
	memDC.CreateCompatibleDC (&dc); 
	memDC.SelectObject (bitmap); 
	dc.BitBlt (0,0,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
	bitmap.DeleteObject(); 
 
	CString Str=TEXT("导航设置"); 
	font.CreatePointFont(180,L"黑体"); 
	dc.SelectObject(&font); 
	dc.SetBkMode(TRANSPARENT); 
	dc.SetTextColor(RGB(255,255,255)); 
	dc.DrawText(Str, CRect(120,8,220,40), 0); 
 
	CString Str2=TEXT("启动时运行导航软件"); 
	font.CreatePointFont(100,L"宋体"); 
	dc.SelectObject(&font); 
	dc.SetBkMode(TRANSPARENT); 
	dc.SetTextColor(RGB(10,0,0)); 
	dc.DrawText(Str2, CRect(33,207,200,230), 0); 
 
	bitmap.LoadBitmap(IDB_LASTPAGE); 
	bitmap.GetObject (sizeof(BITMAP),&bmp); 
	memDC.CreateCompatibleDC (&dc); 
	memDC.SelectObject (bitmap); 
	dc.BitBlt (275,3,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
	bitmap.DeleteObject(); 
 
 
	dc.DrawText(strTemp, CRect(0,0,320,30), 0); 
 
} 
 
HBRUSH CPathDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  
{ 
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
	 
	if(pWnd->GetDlgCtrlID()==IDC_CHECK1) 
	{ 
	//	 pDC->SetBkColor(RGB(156,178,205)); 
		  
		 pDC->SetBkMode(TRANSPARENT); 
		 pDC->SetTextColor(RGB(14,66,121));    
	//	 hbr =  CreateSolidBrush(RGB(156,178,205));    
	} 
	 
	// TODO: Return a different brush if the default is not desired 
	return hbr; 
} 
 
void CPathDlg::OnCheck1()  
{ 
	m_navStart=!m_navStart;	 
} 
 
void CPathDlg::OnLButtonDown(UINT nFlags, CPoint point)  
{ 
	if(PtInRect(CRect(279,6,313,69),point)) 
	{//返回 
		isActiveRe=TRUE; 
	} 
	 
	CDialog::OnLButtonDown(nFlags, point); 
} 
 
void CPathDlg::OnLButtonUp(UINT nFlags, CPoint point)  
{ 
	if(isActiveRe==TRUE) 
	{//返回 
		isActiveRe=FALSE; 
		CString str; 
		CFile m_fSaveFile;  
		TCHAR* pFileName = _T("\\Storage Card\\config.ini");  
 
		if(m_fSaveFile.Open(pFileName,CFile::modeCreate | CFile::modeReadWrite)) 
		{ 
			m_fSaveFile.SeekToBegin();  
			m_fSaveFile.Write(m_path,m_path.GetLength()*2);  
			m_fSaveFile.Write(",",2); 
			str.Format(TEXT("%d"),m_navStart); 
			m_fSaveFile.Write(str,str.GetLength()*2); 
			m_fSaveFile.Close();  
 
			SetFileAttributes(TEXT("\\Storage Card\\config.ini"),FILE_ATTRIBUTE_HIDDEN); 
		} 
		CDialog::OnCancel(); 
	}	 
	CDialog::OnLButtonUp(nFlags, point); 
}