www.pudn.com > diblook > PreviewFileDlg.cpp


///////////////////////////////////////////////////////////////////////////// 
// Copyright (C) 1998 by Jorge Lodos 
// All rights reserved 
// 
// Distribute and use freely, except: 
// 1. Don't alter or remove this notice. 
// 2. Mark the changes you made 
// 
// Send bug reports, bug fixes, enhancements, requests, etc. to: 
//    lodos@cigb.edu.cu 
///////////////////////////////////////////////////////////////////////////// 
 
// PreviewFileDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "resource.h" 
#include "Dib.h" 
#include "DibStatic.h" 
#include "PreviewFileDlg.h" 
 
#include  
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPreviewFileDlg 
 
IMPLEMENT_DYNAMIC(CPreviewFileDlg, CFileDialog) 
 
CPreviewFileDlg::CPreviewFileDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, 
		DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : 
		CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) 
{ 
	m_ofn.Flags |= (OFN_EXPLORER | OFN_ENABLETEMPLATE); 
	m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_FILEOPENPREVIEW); 
 
  m_bPreview = TRUE; 
} 
 
 
BEGIN_MESSAGE_MAP(CPreviewFileDlg, CFileDialog) 
	//{{AFX_MSG_MAP(CPreviewFileDlg) 
	ON_BN_CLICKED(IDC_PREVIEW, OnPreview) 
	ON_WM_QUERYNEWPALETTE() 
	ON_WM_PALETTECHANGED() 
	ON_WM_SETFOCUS() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
 
BOOL CPreviewFileDlg::OnInitDialog()  
{ 
	CFileDialog::OnInitDialog(); 
	 
	m_DIBStaticCtrl.SubclassDlgItem(IDC_IMAGE, this); 
	GetDlgItem(IDC_PREVIEW)->SendMessage(BM_SETCHECK, (m_bPreview) ? 1 : 0); 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CPreviewFileDlg::OnFileNameChange()  
{ 
	CFileDialog::OnFileNameChange(); 
	if (m_bPreview) 
		m_DIBStaticCtrl.LoadDib(GetPathName()); // the control will handle errors 
} 
 
void CPreviewFileDlg::OnFolderChange()  
{ 
	CFileDialog::OnFolderChange(); 
	m_DIBStaticCtrl.RemoveDib(); 
} 
 
void CPreviewFileDlg::OnPreview()  
{ 
	m_bPreview = !m_bPreview; 
	if (!m_bPreview) 
		m_DIBStaticCtrl.RemoveDib(); // no preview 
	else 
		m_DIBStaticCtrl.LoadDib(GetPathName()); // the control will handle errors 
} 
 
BOOL CPreviewFileDlg::OnQueryNewPalette()  
{ 
	m_DIBStaticCtrl.SendMessage(WM_QUERYNEWPALETTE);	// redo the palette if necessary 
	return CFileDialog::OnQueryNewPalette(); 
} 
 
void CPreviewFileDlg::OnPaletteChanged(CWnd* pFocusWnd)  
{ 
	CFileDialog::OnPaletteChanged(pFocusWnd); 
	m_DIBStaticCtrl.SendMessage(WM_PALETTECHANGED, (WPARAM)pFocusWnd->GetSafeHwnd());	// redo the palette if necessary 
} 
 
void CPreviewFileDlg::OnSetFocus(CWnd* pOldWnd)  
{ 
	CFileDialog::OnSetFocus(pOldWnd); 
	m_DIBStaticCtrl.SendMessage(WM_QUERYNEWPALETTE);	// redo the palette if necessary 
} 
 
#ifdef _DEBUG 
void CPreviewFileDlg::Dump(CDumpContext& dc) const 
{ 
	CFileDialog::Dump(dc); 
	if (m_bPreview) 
		dc << "preview is enabled\n"; 
	else 
		dc << "preview is disabled\n"; 
} 
#endif //_DEBUG