www.pudn.com > mu_explorer.rar > DialogFav.cpp


// DialogFav.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "DialogFav.h" 
#include "IEView.h" 
#include "Mainfrm.h" 
#include  
 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CDialogFav dialog 
 
 
CDialogFav::CDialogFav(CWnd* pParent /*=NULL*/) 
	: CDialog(CDialogFav::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CDialogFav) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
 
void CDialogFav::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CDialogFav) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CDialogFav, CDialog) 
	//{{AFX_MSG_MAP(CDialogFav) 
	ON_NOTIFY(TVN_SELCHANGED, IDC_DIRTREE, OnSelchangedDirtree) 
	ON_WM_SIZE() 
	ON_WM_CLOSE() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CDialogFav message handlers 
 
BOOL CDialogFav::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
    // First step    // subclassing the DirTreeCtrl 
    m_DirTree.SubclassDlgItem( IDC_DIRTREE, this );        
	// next step 
    // setting the StartPath if NULL the DirTreeCtrl 
    // displays all drives on this PC 
    m_DirTree.DisplayTree( m_DefaultPath,  
                           TRUE); 
 
	CRect rc;	 
	rc.left=AfxGetApp()->GetProfileInt("Favorite","NormalLeft",400); 
	rc.top=AfxGetApp()->GetProfileInt("Favorite","NormalTop",200); 
	rc.right=AfxGetApp()->GetProfileInt("Favorite","NormalRight",650); 
	rc.bottom=AfxGetApp()->GetProfileInt("Favorite","NormalBottom",500); 
	MoveWindow(&rc); 
    char szWorkDir[256];     
	_getcwd( szWorkDir, 256 ); 
    // set the Path to the current Work-Directory 
    m_DirTree.SetSelPath( szWorkDir );     
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void  CDialogFav::OnSelchangedDirtree(NMHDR* pNMHDR, LRESULT* pResult) 
{ 
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; 
	// TODO: Code f黵 die Behandlungsroutine der Steuerelement-Benachrichtigung hier einf黦en 
	m_strPathName = m_DirTree.GetFullPath( pNMTreeView->itemNew.hItem); 
	if (m_DirTree.GetItemData(pNMTreeView->itemNew.hItem)==0)  
	{		 
		CIEView *pView = ((CMainFrame*)AfxGetMainWnd())->GetActiveIEView(); 
		CFile file; 
		if (!file.Open(m_strPathName, CFile::modeRead)) 
		{ 
			// an error occured 
			AfxMessageBox("无法读取数据!"); 
			return; 
		} 
		char *buf = (char*)malloc((file.GetLength()+1)*sizeof(char)); 
		buf[0]='\0'; 
		file.Read(buf,file.GetLength()); 
		file.Close(); 
 
		CString s(buf); 
		free(buf); 
		// we have to remove  
		int pos = s.Find("URL="); 
		if (pos == -1) // error ?!??!? 
			return; 
		s = s.Mid(pos+4); 
		pos = s.Find("Modified"); 
		if (pos != -1) { 
			// remove everything after... 
			s = s.Left(pos); 
		} 
		pView->ReadUrlDocument(s); 
	} 
	else 
	{ 
		m_DirTree.Expand(pNMTreeView->itemNew.hItem,TVE_EXPAND); 
	} 
	*pResult = 0; 
} 
 
void CDialogFav::OnSize(UINT nType, int cx, int cy)  
{ 
	CDialog::OnSize(nType, cx, cy); 
	 
	// TODO: Add your message handler code here 
	if(m_DirTree.GetSafeHwnd()) 
	{ 
		m_DirTree.MoveWindow(1,1,cx-2,cy-2); 
	}	 
} 
 
void CDialogFav::OnClose()  
{ 
	// TODO: Add your message handler code here and/or call default 
	if(!IsIconic()) 
	{ 
		CRect rc; 
		GetWindowRect(&rc); 
		AfxGetApp()->WriteProfileInt("Favorite","NormalLeft",rc.left); 
		AfxGetApp()->WriteProfileInt("Favorite","NormalTop",rc.top); 
		AfxGetApp()->WriteProfileInt("Favorite","NormalRight",rc.right); 
		AfxGetApp()->WriteProfileInt("Favorite","NormalBottom",rc.bottom); 
	} 
	CDialog::OnClose(); 
}