/*[]=====================================================================[]*/ /*[] LEADTOOLS for Windows(Class Library) - Version 11 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2000 LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ /*---(LoadSave)------------------------------------------------------------ We have made the assumption that the user has the knowledge of Object Oriented programing of C under Windows. This example will: 1. load an image from a file, selected using Windows' common dialog box for opening a file, to a bitmap, 2. display the image in a window. 3. get a filename, format, and bits per pixel to save to, using Windows' common dialog box, 4. save the image. This is a menu driven example for loading and saving images. Usage: LOADSAVE --------------------------------------------------------------------------*/ // loadsaView.cpp : implementation of the CLoadsaView class // #include "stdafx.h" #include "loadsa.h" #include "ldsvDoc.h" #include "ldsvView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CLoadsaView IMPLEMENT_DYNCREATE(CLoadsaView, CView) BEGIN_MESSAGE_MAP(CLoadsaView, CView) //{{AFX_MSG_MAP(CLoadsaView) ON_WM_CREATE() ON_COMMAND(IDM_FILE_SAVE, OnFileSave) ON_COMMAND(ID_ALL_ERORRS, OnAllErorrs) ON_UPDATE_COMMAND_UI(ID_ALL_ERORRS, OnUpdateAllErorrs) ON_UPDATE_COMMAND_UI(IDM_FILE_SAVE, OnUpdateFileSave) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLoadsaView construction/destruction CLoadsaView::CLoadsaView() { // TODO: add construction code here } CLoadsaView::~CLoadsaView() { } BOOL CLoadsaView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CLoadsaView drawing void CLoadsaView::OnDraw(CDC* pDC) { CLoadsaDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here } ///////////////////////////////////////////////////////////////////////////// // CLoadsaView diagnostics #ifdef _DEBUG void CLoadsaView::AssertValid() const { CView::AssertValid(); } void CLoadsaView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CLoadsaDoc* CLoadsaView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLoadsaDoc))); return (CLoadsaDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CLoadsaView message handlers int CLoadsaView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_LBitmapWnd.SetWndHandle(GetSafeHwnd()); return 0; } void CLoadsaView::OnFileSave() { // TODO: Add your command handler code here SAVEDLGPARAMS DlgParams ; OPENFILENAME OpenFileName ; memset ( &DlgParams, 0, sizeof ( SAVEDLGPARAMS ) ) ; memset ( &OpenFileName , 0, sizeof ( OPENFILENAME ) ) ; OpenFileName.lStructSize = sizeof ( OPENFILENAME ) ; OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = _T("Save a File"); OpenFileName.nFilterIndex = 0 ; DlgParams.uStructSize = sizeof ( SAVEDLGPARAMS ) ; DlgParams.nQFactor = 2 ; DlgParams.nPageNumber = 1 ; DlgParams.uSaveMulti = MULTIPAGE_OPERATION_REPLACE ; DlgParams.uDlgFlags = DLG_SAVE_SHOW_FILEOPTIONS_PROGRESSIVE | DLG_SAVE_SHOW_FILEOPTIONS_MULTIPAGE | DLG_SAVE_SHOW_FILEOPTIONS_STAMP | DLG_SAVE_SHOW_FILEOPTIONS_QFACTOR | DLG_SAVE_SHOW_FILEOPTIONS_J2KOPTIONS | DLG_SAVE_SHOW_FILEOPTIONS_BASICJ2KOPTIONS; m_LBitmapWnd.DialogFile()->SetOpenFileName(&OpenFileName); m_LBitmapWnd.DialogFile()->SetSaveParams(&DlgParams); m_LBitmapWnd.DialogFile()->EnableCallBack(FALSE); m_LBitmapWnd.DialogFile()->EnableAutoProcess(TRUE); L_INT nRet= m_LBitmapWnd.DialogFile()->DoModalSave(m_hWnd); if (nRet==SUCCESS_DLG_OK) //put the caption { L_TCHAR zsFileName[255]; L_TCHAR zsName[50]; L_TCHAR zsExt[5]; m_LBitmapWnd.DialogFile()->GetOpenFileName(&OpenFileName); memset(zsFileName,0,sizeof(zsFileName)); memset(zsName,0,sizeof(zsName)); memset(zsExt,0,sizeof(zsExt)); L_UINT uSize = sizeof(zsFileName); m_LBitmapWnd.GetFileName(zsFileName,&uSize); _tsplitpath(zsFileName,NULL,NULL,zsName,zsExt); lstrcat(zsName,zsExt); //m_LBitmapWnd.Save(); GetDocument() ->SetTitle(zsName); } else { if(nRet!=SUCCESS_DLG_CANCEL) LBase::DisplayErrorList(NULL,nRet); } } void CLoadsaView::OnAllErorrs() { LBase::DisplayErrorList(m_hWnd); } void CLoadsaView::OnUpdateAllErorrs(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->Enable(LBase::GetErrorsNumber()); } void CLoadsaView::OnUpdateFileSave(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->Enable(m_LBitmapWnd.IsAllocated()); } void CLoadsaView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { // TODO: Add your specialized code here and/or call the base class if(bActivate==TRUE&&pActivateView==this) if(m_LBitmapWnd.HandlePalette(WM_QUERYNEWPALETTE, 0, 0)==FALSE) m_LBitmapWnd.Repaint(); CView::OnActivateView(bActivate, pActivateView, pDeactiveView); }