// FilePreviewView.cpp // // (c)1998-2025 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "WinExplorer.h" #include "FilePreviewView.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFilePreviewView IMPLEMENT_DYNCREATE(CFilePreviewView, CView) CFilePreviewView::CFilePreviewView() { } CFilePreviewView::~CFilePreviewView() { } void CFilePreviewView::Preview(LPCTSTR lpPath) { _ASSERTE(::IsWindow(m_preview)); m_preview.Preview(lpPath); // Uncomment this code in order to test loading preview data from a stream: // // IStreamPtr stream; // if (S_OK == SHCreateStreamOnFile(lpPath, STGM_READ | STGM_SHARE_DENY_WRITE, &stream)) // { // m_preview.Preview(stream, lpPath); // } } ///////////////////////////////////////////////////////////////////////////// // CFilePreviewView drawing void CFilePreviewView::OnDraw(CDC* /*pDC*/) { } ///////////////////////////////////////////////////////////////////////////// // CFilePreviewView diagnostics #ifdef _DEBUG void CFilePreviewView::AssertValid() const { CView::AssertValid(); } void CFilePreviewView::Dump(CDumpContext& dc) const { CView::Dump(dc); } #endif //_DEBUG void CFilePreviewView::Layout() { if (!::IsWindow(m_preview)) return; CXTPClientRect rc(this); m_preview.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER); m_preview.UpdateWindow(); } ///////////////////////////////////////////////////////////////////////////// // CFilePreviewView message handlers BOOL CFilePreviewView::PreCreateWindow(CREATESTRUCT& cs) { if (!CView::PreCreateWindow(cs)) return FALSE; cs.dwExStyle |= WS_EX_STATICEDGE; return TRUE; } void CFilePreviewView::OnInitialUpdate() { CView::OnInitialUpdate(); } BEGIN_MESSAGE_MAP(CFilePreviewView, CView) ON_WM_CREATE() ON_WM_WINDOWPOSCHANGED() ON_WM_WINDOWPOSCHANGING() END_MESSAGE_MAP() int CFilePreviewView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (-1 == CView::OnCreate(lpCreateStruct)) return -1; if (!m_preview.Create(WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, CRect(0, 0, 1, 1), this, 0)) { TRACE(_T("Unable to create preview control")); return -1; } m_preview.AddDefaultProviders(); m_preview.AddProvider(new CXTPTextPreviewProvider(), _T("log;reg;cmd;bat;cpp;c;h;rc;rc2;inl;asm;cs;sln;vcproj;vcxproj;csproj;") _T("vbproj;mak;filters;css;manifest;rgs;dsp;dsw;def;") _T("hpp;js;vbs;xml;xsl;xslt;idl;odl;ini;resx;") _T("java;sql;pas;vb;frm;html;htm;csv;md;ps1;json;py;inf;sh;iss")); return 0; } void CFilePreviewView::OnWindowPosChanged(WINDOWPOS* lpWndPos) { CView::OnWindowPosChanged(lpWndPos); Layout(); } void CFilePreviewView::OnWindowPosChanging(WINDOWPOS* lpWndPos) { CView::OnWindowPosChanged(lpWndPos); Layout(); }