// Maindemo.cpp : implementation of the CMainFrame class // #include "stdafx.h" #include "mfcdemo.h" #include "BrowsDlg.h" #include "Maindemo.h" #include "..\..\..\..\include\l_OCXERR.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern CMfcdemoApp theApp; static UINT BASED_CODE indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_QUERYNEWPALETTE() ON_WM_PALETTECHANGED() ON_WM_CLOSE() ON_COMMAND(ID_FILE_BROWSE, OnFileBrowse) ON_WM_SYSCOLORCHANGE() ON_WM_PALETTEISCHANGING() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { // TODO: add member initialization code here m_pBrowseDlg=NULL; } CMainFrame::~CMainFrame() { } static const WCHAR BASED_CODE _szLicString[] = L"LEADTOOLS OCX Copyright (c) 1991-2001 LEAD Technologies, Inc."; int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } // TODO: Remove this if you don't want tool tips or a resizeable toolbar m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); // TODO: Delete these three lines if you don't want the toolbar to // be dockable m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); m_pLead = new CLead; // pass the license string to the CLead::Create function. // The CLead::Create expects a BSTR parameter and SysAllocString converts the // WCHAR[] to a BSTR BSTR lpLic = SysAllocString(_szLicString); m_pLead->Create("", 0,CRect(0,0,50,50),this,0,NULL,FALSE,lpLic); m_pLead->ShowWindow(SW_HIDE); SysFreeString(lpLic); m_pLead->SetAutoPan(FALSE); UNLOCKSUPPORT(*m_pLead); // Unlock support for the LZW files and express capabilities #ifndef _ALPHA_ m_pLTIsis = new CLeadIsis; m_pLTIsis->Create(NULL,0,CRect(0,0,1,1),this,100); #endif return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CMDIFrameWnd::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CMDIFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CMDIFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers BOOL CMainFrame::OnQueryNewPalette() { // always realize the palette for the active view CMDIChildWnd* pMDIChildWnd = MDIGetActive(); if (pMDIChildWnd == NULL) return FALSE; // no active MDI child frame (no new palette) CView* pView = pMDIChildWnd->GetActiveView(); ASSERT(pView != NULL); // just notify the target view return((BOOL) pView->SendMessage(WM_DOREALIZE, (WPARAM)m_hWnd, (LPARAM) FALSE)); } void CMainFrame::OnPaletteChanged(CWnd* pFocusWnd) { CMDIFrameWnd::OnPaletteChanged(pFocusWnd); CMDIChildWnd* pMDIChildWnd = MDIGetActive(); if (pMDIChildWnd == NULL) return; // no active MDI child frame SendMessageToDescendants(WM_DOREALIZE, (WPARAM)pFocusWnd->m_hWnd, (LPARAM) TRUE); } void CMainFrame::OnClose() { if (theApp.m_nEffectsCount) return; if(m_pBrowseDlg && m_pBrowseDlg->m_bBrowsing) { m_bBrowseQuit=TRUE; return; } m_pLead->DestroyWindow(); delete m_pLead; #ifndef _ALPHA_ delete m_pLTIsis; #endif if(m_pBrowseDlg) { m_pBrowseDlg->DestroyWindow(); m_pBrowseDlg=NULL; } CMDIFrameWnd::OnClose(); } void CMainFrame::BrowseDone() { m_pBrowseDlg = NULL; } void CMainFrame::OnFileBrowse() { short nRet; HCURSOR hOldCursor=NULL; if(m_pBrowseDlg) { m_pBrowseDlg->DestroyWindow(); delete m_pBrowseDlg; m_pBrowseDlg=NULL; } { theApp.m_pRasterFileDlg->PutEnableMethodErrors(FALSE); theApp.m_pRasterFileDlg->PutUIFlags( 0 ); theApp.m_pRasterFileDlg->DialogTitle = "Select a Directory to browse"; nRet = theApp.m_pRasterFileDlg->ShowDirectoryDlg((long)this->m_hWnd); if(nRet == 0 && theApp.m_pRasterFileDlg->GetDialogStatus() == DLG_OK) { //create window m_pBrowseDlg = new CBrowseDlg(this); m_pBrowseDlg->Create(); m_pBrowseDlg->m_LEADImageList.Clear(); m_pBrowseDlg->m_HiddenList.ResetContent(); m_bBrowseQuit = FALSE; //browse a directory hOldCursor = SetCursor(theApp.LoadStandardCursor(MAKEINTRESOURCE(IDC_WAIT))); m_pBrowseDlg->m_LEADImageList.SetAllowSelection(ALLOWSELECTION_SINGLE); m_pBrowseDlg->m_LEADThumb.SetFilter("*.*"); m_pBrowseDlg->m_LEADThumb.SetEnableMethodErrors(FALSE); m_pBrowseDlg->m_LEADThumb.SetForceSize(FALSE); m_pBrowseDlg->m_LEADThumb.SetResample(FALSE); m_pBrowseDlg->m_LEADThumb.SetLoadStamp(FALSE); m_pBrowseDlg->m_LEADThumb.SetMaintainAspect(TRUE); m_pBrowseDlg->m_LEADThumb.SetStopOnError(FALSE); m_pBrowseDlg->m_LEADThumb.SetIncludeSubDirectories(FALSE); m_pBrowseDlg->m_LEADThumb.SetExpandMultipage(FALSE); m_pBrowseDlg->m_LEADThumb.SetThumbnailBitsPerPixel(24); m_pBrowseDlg->m_LEADThumb.SetMaxSizeMem(0); //set a size limit m_pBrowseDlg->SetWindowText("Browsing: " + theApp.m_pRasterFileDlg->GetDirectory()); m_pBrowseDlg->ShowWindow(SW_SHOW); m_pBrowseDlg->m_bBrowsing = TRUE; nRet = m_pBrowseDlg->m_LEADThumb.BrowseDir(theApp.m_pRasterFileDlg->GetDirectory()); m_pBrowseDlg->m_bBrowsing = FALSE; if(nRet != 0) { if(nRet != ERROR_USER_ABORT) { CString csOut; csOut.Format("Error browsing directory: %ld", nRet); AfxMessageBox(csOut); m_pBrowseDlg->DestroyWindow(); m_pBrowseDlg=NULL; } else AfxMessageBox("Browsing Canceled!"); } SetCursor(hOldCursor); } } } void CMainFrame::OnSysColorChange() { OnQueryNewPalette(); } void CMainFrame::OnPaletteIsChanging(CWnd* pRealizeWnd) { OnPaletteChanged(pRealizeWnd); } void CMainFrame::CreateRasterObjectLic(CLead ** ppLead) { *ppLead = new CLead; // pass the license string to the CLead::Create function. // The CLead::Create expects a BSTR parameter and SysAllocString converts the // WCHAR[] to a BSTR BSTR lpLic = SysAllocString(L"LEADTOOLS OCX Copyright (c) 1991-2001 LEAD Technologies, Inc."); (*ppLead)->Create("", 0,CRect(0,0,50,50),this,0,NULL,FALSE,lpLic); (*ppLead)->ShowWindow(SW_HIDE); SysFreeString(lpLic); (*ppLead)->SetAutoPan(FALSE); UNLOCKSUPPORT(**ppLead); // Unlock support for the LZW files and express capabilities }