// mfcdemo.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "mfcdemo.h" #include "BrowsDlg.h" #include "Maindemo.h" #include "Childdem.h" #include "mfcdeDoc.h" #include "mfcdeVw.h" #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif VOID RegisterAppKey ( HINSTANCE hInstance ); #define REG_KEYS 2 #define UNITS_PER_INCH 1000 ///////////////////////////////////////////////////////////////////////////// // CMfcdemoApp BEGIN_MESSAGE_MAP(CMfcdemoApp, CWinApp) //{{AFX_MSG_MAP(CMfcdemoApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) ON_COMMAND(ID_FILE_CAPTURESCREEN, OnFileCapturescreen) ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste) ON_COMMAND(ID_FILE_ACQUIRE, OnFileAcquire) ON_COMMAND(ID_FILE_SELECTSOURCE, OnFileSelectsource) ON_COMMAND(ID_FILE_ISISSELECTSOURCE, OnFileIsisSelectSource) ON_COMMAND(ID_PREFERENCES_DITHERING_ERRORDIFFUSION, OnPreferencesDitheringErrordiffusion) ON_COMMAND(ID_PREFERENCES_DITHERING_ORDERED, OnPreferencesDitheringOrdered) ON_COMMAND(ID_PREFERENCES_PALETTE_AUTO, OnPreferencesPaletteAuto) ON_COMMAND(ID_PREFERENCES_PALETTE_FIXED, OnPreferencesPaletteFixed) ON_COMMAND(ID_PREFERENCES_BITONALSCALING_FAVORBLACK, OnPreferencesBitonalscalingFavorblack) ON_COMMAND(ID_PREFERENCES_BITONALSCALING_NORMAL, OnPreferencesBitonalscalingNormal) ON_COMMAND(ID_PREFERENCES_BITONALSCALING_SCALETOGRAY, OnPreferencesBitonalscalingScaletogray) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_DITHERING_ERRORDIFFUSION, OnUpdatePreferencesDitheringErrordiffusion) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_DITHERING_ORDERED, OnUpdatePreferencesDitheringOrdered) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PALETTE_AUTO, OnUpdatePreferencesPaletteAuto) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PALETTE_FIXED, OnUpdatePreferencesPaletteFixed) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_NORMAL, OnUpdatePreferencesBitonalscalingNormal) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_SCALETOGRAY, OnUpdatePreferencesBitonalscalingScaletogray) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_BITONALSCALING_FAVORBLACK, OnUpdatePreferencesBitonalscalingFavorblack) ON_COMMAND(ID_PREFERENCES_PAINTSCALING_NORMAL, OnPreferencesPaintscalingNormal) ON_COMMAND(ID_PREFERENCES_PAINTSCALING_RESAMPLE, OnPreferencesPaintscalingResample) ON_COMMAND(ID_PREFERENCES_PAINTSCALING_BICUBIC, OnPreferencesPaintscalingBicubic) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PAINTSCALING_NORMAL, OnUpdatePreferencesPaintscalingNormal) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PAINTSCALING_RESAMPLE, OnUpdatePreferencesPaintscalingResample) ON_UPDATE_COMMAND_UI(ID_PREFERENCES_PAINTSCALING_BICUBIC, OnUpdatePreferencesPaintscalingBicubic) ON_COMMAND(ID_FILE_COLORMERGE, OnFileColormerge) ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_COMMAND(IDM_CONVERT, OnConvert) ON_COMMAND(IDM_FILEFORMATASSOCIATIONS, OnFileformatassociations) #ifndef _ALPHA_ ON_COMMAND(ID_FILE_ISISACQUIRE, OnFileIsisacquire) ON_COMMAND(ID_FILE_ISISACQUIREMULTI, OnFileIsisacquiremulti) ON_UPDATE_COMMAND_UI(ID_FILE_SELECTSOURCE, OnUpdateFileTwainselect) ON_UPDATE_COMMAND_UI(ID_FILE_ACQUIRE, OnUpdateFileTwainacquire) ON_UPDATE_COMMAND_UI(ID_FILE_ISISACQUIRE, OnUpdateFileIsisacquire) ON_UPDATE_COMMAND_UI(ID_FILE_ISISACQUIREMULTI, OnUpdateFileIsisacquiremulti) ON_UPDATE_COMMAND_UI(ID_FILE_ISISSELECTSOURCE, OnUpdateFileIsisselectsource) #endif //}}AFX_MSG_MAP // Standard file based document commands ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) // Standard print setup command ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMfcdemoApp construction CMfcdemoApp::CMfcdemoApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance m_bEnableTwain = FALSE; m_uPicturizeFlags = PICTURIZE_LOADALL | PICTURIZE_RESAMPLE; m_nEffectsCount = 0; m_bDICOMLoadMsg = TRUE; m_bDICOMSaveMsg = TRUE; m_pRasterTwainSink = NULL; //Dialogs m_pRasterKrnDlg = NULL; m_pRasterFileDlg = NULL; m_pRasterImgDlg = NULL; m_pRasterClrDlg = NULL; m_pRasterImgEfxDlg = NULL; m_pRasterImgDocDlg = NULL; m_pRasterWebDlg = NULL; } ///////////////////////////////////////////////////////////////////////////// // The one and only CMfcdemoApp object CMfcdemoApp theApp; short gnPage; ///////////////////////////////////////////////////////////////////////////// // CMfcdemoApp initialization BOOL CMfcdemoApp::InitInstance() { AfxEnableControlContainer(); m_nOpenMode = OPENMODE_FILE; m_fOrderedDither = TRUE; m_fAutoPalette = TRUE; m_nBitonalScaling = BITONALSCALING_NORMAL; m_nPaintScaling = PAINTSCALING_RESAMPLE; gnPage = 1; // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif LoadStdProfileSettings(); // Load standard INI file options (including MRU) // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views. CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_MFCDEMTYPE, RUNTIME_CLASS(CMfcdemoDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CMfcdemoView)); AddDocTemplate(pDocTemplate); // create main MDI Frame window CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) return FALSE; m_pMainWnd = pMainFrame; // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); //Do not create document at startup if ( CCommandLineInfo::FileNew == cmdInfo.m_nShellCommand ) { cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; } // The main window has been initialized, so show and update it. pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); CoInitialize(NULL); HRESULT hr; m_pRasterKrnDlg = NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgKrn_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgKrn_D, (void**)&m_pRasterKrnDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitInstance(); return FALSE;} m_pRasterKrnDlg->InitDlg(INIT_WITH_COLOR); m_pRasterKrnDlg->EnableMethodErrors = FALSE; m_pRasterFileDlg=NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgFile_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgFile_D, (void**)&m_pRasterFileDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitInstance(); return FALSE;} m_pRasterFileDlg->EnableMethodErrors = FALSE; m_pRasterImgDlg = NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgImg_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgImg_D, (void**)&m_pRasterImgDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitInstance(); return FALSE;} m_pRasterImgDlg->EnableMethodErrors = FALSE; m_pRasterClrDlg=NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgClr_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgClr_D, (void**)&m_pRasterClrDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitInstance(); return FALSE;} m_pRasterClrDlg->EnableMethodErrors = FALSE; m_pRasterImgEfxDlg =NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgImgEfx_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgImgEfx_D, (void**)&m_pRasterImgEfxDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitInstance(); return FALSE;} m_pRasterImgEfxDlg->EnableMethodErrors = FALSE; m_pRasterImgDocDlg=NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgImgDoc_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgImgDoc_D, (void**)&m_pRasterImgDocDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitInstance(); return FALSE;} m_pRasterFileDlg->EnableMethodErrors = FALSE; m_pRasterWebDlg = NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgWeb_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgWeb_D, (void**)&m_pRasterWebDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);ExitInstance(); return FALSE;} m_pRasterImgDlg->EnableMethodErrors = FALSE; //Instantiate the twain browswer sink class and hold a pointer to it. m_pRasterTwainSink = new CRasterTwainSink; //Create the RasterTwain object m_pRasterKrnDlg->InitDlg(INIT_WITH_COLOR); //Establish a connection between source and sink. hr = CoCreateInstance(CLSID_LEADRasterTwain_D, NULL, CLSCTX_ALL, IID_ILEADRasterTwain_D, (void**)&m_pRasterTwain); if (SUCCEEDED(hr)) { if(m_pRasterTwain->IsAvailable((long)m_pMainWnd->m_hWnd)) { m_pRasterTwain->InitSession((long)m_pMainWnd->m_hWnd); m_bEnableTwain = TRUE; } } if (!ProcessShellCommand(cmdInfo)) return FALSE; //Establish a connection between source and sink. LPUNKNOWN pUnkSink = m_pRasterTwainSink->GetIDispatch(FALSE); AfxConnectionAdvise(m_pRasterTwain, DIID__LEADRasterTwainEvents_D, pUnkSink, FALSE, &m_dwCookie); RegisterAppKey(this->m_hInstance); return TRUE; } int CMfcdemoApp::ExitInstance() { if (m_pRasterKrnDlg != NULL) m_pRasterKrnDlg->Release(); if (m_pRasterWebDlg != NULL) m_pRasterWebDlg->Release(); if (m_pRasterClrDlg != NULL) m_pRasterClrDlg->Release(); if (m_pRasterFileDlg != NULL) m_pRasterFileDlg->Release(); if (m_pRasterImgDlg != NULL) m_pRasterImgDlg->Release(); if (m_pRasterImgEfxDlg!=NULL) m_pRasterImgEfxDlg->Release(); if (m_pRasterImgDocDlg!=NULL) m_pRasterImgDocDlg->Release(); LPUNKNOWN pUnkSink = m_pRasterTwainSink->GetIDispatch(FALSE); AfxConnectionUnadvise(m_pRasterTwain, DIID__LEADRasterTwainEvents_D, pUnkSink, FALSE, m_dwCookie); delete m_pRasterTwainSink; if (m_pRasterTwain != NULL) { if(m_bEnableTwain) { m_pRasterTwain->EndSession(); } m_pRasterTwain->Release(); } CoUninitialize(); return CWinApp::ExitInstance(); } ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CMfcdemoApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } ///////////////////////////////////////////////////////////////////////////// // CMfcdemoApp commands int CMfcdemoApp::DisplayLEADError(int nCode) { CString str; if((nCode == DLG_CANCEL) || (nCode == ERROR_ISIS_CANCEL)) nCode = 0; if(nCode) { str.Format("A LEADTOOLS error has occured.\nCODE = %d", nCode); m_pMainWnd->MessageBox(str); } return(nCode); } void CMfcdemoApp::OpenDocument(int nMode) { m_nOpenMode = nMode; OnFileNew(); m_nOpenMode = OPENMODE_FILE; } void CMfcdemoApp::OnFileCapturescreen() { OpenDocument(OPENMODE_CAPTURE); } void CMfcdemoApp::OnEditPaste() { OpenDocument(OPENMODE_PASTE); } void CMfcdemoApp::OnUpdateEditPaste(CCmdUI* pCmdUI) { CLead* pLead = GetMainLead(); if(pLead) { ASSERT(IsWindow(pLead->m_hWnd)); pCmdUI->Enable(pLead->Paste(PASTE_ISREADY)); } } void CMfcdemoApp::OnFileAcquire() { OpenDocument(OPENMODE_TWAIN); } void CMfcdemoApp::OnFileSelectsource() { CLead *pLead = GetMainLead(); theApp.m_pRasterTwain->EnableMethodErrors = FALSE; int nRet = theApp.m_pRasterTwain->SelectSource(); // show no error if the user clicks on Cancel if( nRet && nRet != ERROR_TWAIN_CANCEL ) theApp.DisplayLEADError(nRet); theApp.m_pRasterTwain->EnableMethodErrors = TRUE; } CPtrArray *CMfcdemoApp::EnumAllDocuments( CDocument *pDocToExclude /*=NULL*/) { CPtrArray* pArray; // POSITION pos = m_templateList.GetHeadPosition(); POSITION pos = theApp.GetFirstDocTemplatePosition(); pArray = new CPtrArray; while (pos != NULL) { // CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos); CDocTemplate* pTemplate = theApp.GetNextDocTemplate(pos); POSITION posDoc = pTemplate->GetFirstDocPosition(); while(posDoc != NULL) { CDocument* pDoc = pTemplate->GetNextDoc(posDoc); if( pDoc != pDocToExclude ) pArray->Add(pDoc); } } return(pArray); } void CMfcdemoApp::UpdateAllDocumentViews() { // POSITION pos = m_templateList.GetHeadPosition(); POSITION pos = theApp.GetFirstDocTemplatePosition(); while (pos != NULL) { // CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos); CDocTemplate* pTemplate = theApp.GetNextDocTemplate(pos); POSITION posDoc = pTemplate->GetFirstDocPosition(); while(posDoc != NULL) { CDocument* pDoc = pTemplate->GetNextDoc(posDoc); pDoc->UpdateAllViews(NULL, (LPARAM) 0); } } } void CMfcdemoApp::OnPreferencesDitheringErrordiffusion() { m_fOrderedDither = FALSE; UpdateAllDocumentViews(); } void CMfcdemoApp::OnPreferencesDitheringOrdered() { m_fOrderedDither = TRUE; UpdateAllDocumentViews(); } CLead* CMfcdemoApp::GetMainLead() { CMainFrame* pFrame; pFrame = (CMainFrame*)m_pMainWnd; if(!pFrame) return(NULL); return(pFrame->m_pLead); } CLeadIsis* CMfcdemoApp::GetMainIsis() { CMainFrame* pFrame; pFrame = (CMainFrame*)m_pMainWnd; if(!pFrame) return(NULL); return(pFrame->m_pLTIsis); } void CMfcdemoApp::OnPreferencesPaletteAuto() { m_fAutoPalette = TRUE; UpdateAllDocumentViews(); } void CMfcdemoApp::OnPreferencesPaletteFixed() { m_fAutoPalette = FALSE; UpdateAllDocumentViews(); } void CMfcdemoApp::OnPreferencesBitonalscalingFavorblack() { m_nBitonalScaling = BITONALSCALING_FAVORBLACK; UpdateAllDocumentViews(); } void CMfcdemoApp::OnPreferencesBitonalscalingNormal() { m_nBitonalScaling = BITONALSCALING_NORMAL; UpdateAllDocumentViews(); } void CMfcdemoApp::OnPreferencesBitonalscalingScaletogray() { m_nBitonalScaling = BITONALSCALING_SCALETOGRAY; UpdateAllDocumentViews(); } void CMfcdemoApp::OnPreferencesPaintscalingNormal() { m_nPaintScaling = PAINTSCALING_NORMAL; UpdateAllDocumentViews(); } void CMfcdemoApp::OnPreferencesPaintscalingResample() { m_nPaintScaling = PAINTSCALING_RESAMPLE; UpdateAllDocumentViews(); } void CMfcdemoApp::OnPreferencesPaintscalingBicubic() { m_nPaintScaling = PAINTSCALING_BICUBIC; UpdateAllDocumentViews(); } void CMfcdemoApp::OnUpdatePreferencesDitheringErrordiffusion(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_fOrderedDither ? 0 : 1); } void CMfcdemoApp::OnUpdatePreferencesDitheringOrdered(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_fOrderedDither ? 1 : 0); } void CMfcdemoApp::OnUpdatePreferencesPaletteAuto(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_fAutoPalette ? 1 : 0); } void CMfcdemoApp::OnUpdatePreferencesPaletteFixed(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_fAutoPalette ? 0 : 1); } void CMfcdemoApp::OnUpdatePreferencesBitonalscalingFavorblack(CCmdUI* pCmdUI) { CLead* pLead = GetMainLead(); if(pLead) pCmdUI->Enable(pLead->GetVersionLevel() == VERSIONLEVEL_DOCUMENT||pLead->GetVersionLevel() == VERSIONLEVEL_MEDICAL); pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_FAVORBLACK); } void CMfcdemoApp::OnUpdatePreferencesBitonalscalingNormal(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_NORMAL); } void CMfcdemoApp::OnUpdatePreferencesBitonalscalingScaletogray(CCmdUI* pCmdUI) { CLead* pLead = GetMainLead(); if(pLead) pCmdUI->Enable(pLead->GetVersionLevel() == VERSIONLEVEL_DOCUMENT||pLead->GetVersionLevel() == VERSIONLEVEL_MEDICAL); pCmdUI->SetCheck(m_nBitonalScaling == BITONALSCALING_SCALETOGRAY); } void CMfcdemoApp::OnUpdatePreferencesPaintscalingNormal(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nPaintScaling == PAINTSCALING_NORMAL); } void CMfcdemoApp::OnUpdatePreferencesPaintscalingResample(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nPaintScaling == PAINTSCALING_RESAMPLE); } void CMfcdemoApp::OnUpdatePreferencesPaintscalingBicubic(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nPaintScaling == PAINTSCALING_BICUBIC); } void CMfcdemoApp::OnFileColormerge() { OpenDocument(OPENMODE_COLORMERGE); } static const WCHAR BASED_CODE _szLicString[] = L"LEADTOOLS OCX Copyright (c) 1991-2001 LEAD Technologies, Inc."; void CMfcdemoApp::OnFileOpen() { BOOL bContinue=FALSE; int nRet; m_pRasterFileDlg->PutFilter(""); m_pRasterFileDlg->PutFileDlgFlags(0); m_pRasterFileDlg->PutFileName(""); m_pRasterFileDlg->PutDialogTitle("Open File"); m_pRasterFileDlg->PutUIFlags(OPEN_SHOW_MULTIPAGE | OPEN_SHOW_PREVIEW | OPEN_USEFILESTAMP | OPEN_SHOW_FILEINFO | OPEN_SHOW_LOADOPTIONS | OPEN_SHOW_LOADCOMPRESSED | OPEN_SHOW_LOADROTATED | OPEN_SHOW_DELPAGE | OPEN_SHOW_PDFOPTIONS | OPEN_SHOW_RASTEROPTIONS | OPEN_SHOW_VECTOROPTIONS | OPEN_VIEWTOTALPAGES | OPEN_ENABLESIZING ); nRet = m_pRasterFileDlg->ShowOpenDlg((long)m_pMainWnd->m_hWnd); if(nRet == 0 && m_pRasterFileDlg->GetDialogStatus() ==DLG_OK) { POSITION pos = GetFirstDocTemplatePosition(); OpenDocumentFile((LPCTSTR)m_pRasterFileDlg->GetFileName()); } return; } void CMfcdemoApp::OnConvert() { theApp.m_pRasterFileDlg->PutOverWriteFlags(FILECONVERSION_OVERWRITE_SKIP); theApp.m_pRasterFileDlg->PutEnableLogReport(TRUE); theApp.m_pRasterFileDlg->PutEnableRemoveSourceFile(FALSE); theApp.m_pRasterFileDlg->PutEnableShowFullPath(TRUE); theApp.m_pRasterFileDlg->PutUseOriginalFolder(TRUE); theApp.m_pRasterFileDlg->PutUIFlags( FILECONVERSION_SHOW_ADD | FILECONVERSION_SHOW_PREVIEW | FILECONVERSION_SHOW_LOADOPTIONS | FILECONVERSION_SHOW_FILEINFO | FILECONVERSION_SHOW_PREVIEW_PAGES | FILECONVERSION_SHOW_RESIZE | FILECONVERSION_SHOW_ROTATE | FILECONVERSION_SHOW_NAMINGTEMPLATE | FILECONVERSION_SHOW_OVERWRITE | FILECONVERSION_SHOW_OVERWRITE_ALL | FILECONVERSION_SHOW_ADD | FILECONVERSION_SHOW_ADDFOLDER | FILECONVERSION_SHOW_REMOVE | FILECONVERSION_SHOW_SELECTALL | FILECONVERSION_SHOW_DELETEORIGINAL ); theApp.m_pRasterFileDlg->ShowFileConversionDlg((long)m_pMainWnd->m_hWnd); } void CMfcdemoApp::OnFileformatassociations() { theApp.m_pRasterFileDlg->ServerApplicationName = REGISTRYKEY_SERVER_NAME; theApp.m_pRasterFileDlg->ShowFilesAssociationDlg((long)m_pMainWnd->m_hWnd); } #ifndef _ALPHA_ void CMfcdemoApp::OnFileIsisSelectSource() { CLeadIsis LTIsis; RECT rcWin; int nRet; ::SetRect(&rcWin, 0, 0, 1, 1); if(LTIsis.Create(NULL,0,rcWin,m_pMainWnd,100)) { LTIsis.SetEnableMethodErrors(FALSE); nRet = LTIsis.ISISSelect((long)LTIsis.m_hWnd); // LTIsis.ISISLoadDriver(); // LTIsis.ISISSetScanOptions((long)LTIsis.m_hWnd); // LTIsis.ISISUnloadDriver(); if(nRet != ERROR_USER_ABORT) theApp.DisplayLEADError(nRet); } } void CMfcdemoApp::OnFileIsisacquire() { OpenDocument(OPENMODE_ISIS); } void CMfcdemoApp::OnFileIsisacquiremulti() { CLeadIsis LTIsis; RECT rcWin; BOOL bContinue=FALSE; int nRet; char buf[1024]; long MaxPages; ::SetRect(&rcWin, 0, 0, 1, 1); theApp.m_pRasterFileDlg->PutEnableMethodErrors(FALSE); theApp.m_pRasterFileDlg->PutFileDlgFlags(0); theApp.m_pRasterFileDlg->PutSaveQFactor(2); theApp.m_pRasterFileDlg->PutPageNumber(1); theApp.m_pRasterFileDlg->PutDialogTitle("Save File"); theApp.m_pRasterFileDlg->PutUIFlags( SAVE_SHOW_FILEOPTIONS_MULTIPAGE | SAVE_SHOW_FILEOPTIONS_PROGRESSIVE | SAVE_SHOW_FILEOPTIONS_QFACTOR| SAVE_SHOW_FILEOPTIONS_STAMP | SAVE_SHOW_FILEOPTIONS_BASICJ2KOPTIONS| SAVE_SHOW_FILEOPTIONS_J2KOPTIONS); nRet = theApp.m_pRasterFileDlg->ShowSaveDlg((long)theApp.m_pMainWnd->m_hWnd); if(nRet == 0) bContinue = TRUE; else { theApp.DisplayLEADError(nRet); return; } if(bContinue) { ::SetRect(&rcWin, 0, 0, 1, 1); if(LTIsis.Create(NULL,0,rcWin,m_pMainWnd,100)) { LTIsis.SetEnableMethodErrors(FALSE); nRet = LTIsis.ISISLoadDriver(); if(nRet == 0) { //enable ScanAhead, and set max pages to max ADF pages LTIsis.ISISSetTag(TAG_SCANAHEAD, TAG_SCANAHEAD_YES); LTIsis.ISISGetTag(TAG_MAXPAGES, &MaxPages); LTIsis.ISISSetTag(TAG_SCANAHEAD_MAXPAGES, MaxPages); if(theApp.m_pRasterFileDlg->GetSaveFormat() == FILE_CCITT_GROUP4) LTIsis.ISISSetTag(TAG_SCANAHEAD_MAXPAGES, TAG_COMPRESSION_G4); else LTIsis.ISISSetTag(TAG_SCANAHEAD_MAXPAGES, TAG_COMPRESSION_NONE); nRet = LTIsis.ISISAcquireMulti((long)LTIsis.m_hWnd, (LPCTSTR)theApp.m_pRasterFileDlg->GetFileName(), ISIS_SHOWUI, theApp.m_pRasterFileDlg->GetSaveFormat(), (short)theApp.m_pRasterFileDlg->GetSaveMulti() ); LTIsis.ISISUnloadDriver(); } } if(nRet == 0) { wsprintf(buf, "Image(s) acquired to file(s) %s", (LPCTSTR)theApp.m_pRasterFileDlg->GetFileName()); AfxMessageBox(buf); } else if(nRet != ERROR_ISIS_CANCEL) theApp.DisplayLEADError(nRet); } } void CMfcdemoApp::OnUpdateFileTwainselect(CCmdUI* pCmdUI) { if(m_pRasterTwain->IsAvailable((long)m_pMainWnd->m_hWnd)) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CMfcdemoApp::OnUpdateFileTwainacquire(CCmdUI* pCmdUI) { if(m_pRasterTwain->IsAvailable((long)m_pMainWnd->m_hWnd)) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CMfcdemoApp::OnUpdateFileIsisacquire(CCmdUI* pCmdUI) { CLeadIsis *pLTIsis = GetMainIsis(); pCmdUI->Enable(pLTIsis->GetIsISISAvailable()); } void CMfcdemoApp::OnUpdateFileIsisacquiremulti(CCmdUI* pCmdUI) { CLeadIsis *pLTIsis = GetMainIsis(); pCmdUI->Enable(pLTIsis->GetIsISISAvailable()); } void CMfcdemoApp::OnUpdateFileIsisselectsource(CCmdUI* pCmdUI) { CLeadIsis *pLTIsis = GetMainIsis(); pCmdUI->Enable(pLTIsis->GetIsISISAvailable()); } #endif //Stores iVal (1000ths of inches or pixels) in string szVal CString CMfcdemoApp::UnitToString(long iVal, BOOL bInches) { CString szVal; double dVal; if(bInches) { dVal = (double)iVal / (double)UNITS_PER_INCH; szVal.Format("%.3f", dVal); } else //pixels { dVal = (double)iVal; szVal.Format("%.0f", dVal); } return szVal; } CString CMfcdemoApp::IntToString(UINT iVal) { CString szVal; szVal.Format("%d", iVal); return szVal; } //Converts szVal to 1000ths of inches or pixels BOOL CMfcdemoApp::StringToUnit(long *piVal, char *szVal, BOOL bInches) { char *pChar; double dVal; BOOL bRet; dVal = strtod(szVal, &pChar); if(bRet = (*pChar == '\0')) { if(bInches) *piVal = (long)(dVal * UNITS_PER_INCH); else *piVal = (long)(dVal); } return bRet; } long CMfcdemoApp::InchesToPixels(long iInches, long iRes) { long iPixels; iPixels = iInches * iRes / UNITS_PER_INCH; return(iPixels); } long CMfcdemoApp::PixelsToInches(long iPixels, long iRes) { long iInches; iInches = iPixels * UNITS_PER_INCH / iRes; return(iInches); } static BOOL CreateStandardServerRegisteryEntry ( TCHAR FAR * pszServerName, TCHAR FAR * pszCommand, TCHAR FAR * pszDefaultIcon ) { DWORD dwDispos ; LONG lRet ; HKEY hKey ; BOOL fRet = TRUE ; TCHAR FAR *szRegisterKey [ REG_KEYS ] = { TEXT ( "\\shell\\open\\command" ), TEXT ( "\\DefaultIcon" ) } ; TCHAR FAR *szRegisterKeyDefaultValues [ REG_KEYS ] = { pszCommand, pszDefaultIcon } ; {// CREATE SERVER NODE lRet = RegCreateKeyEx ( HKEY_CLASSES_ROOT, pszServerName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDispos ) ; if ( lRet != ERROR_SUCCESS ) { return FALSE ; } RegCloseKey ( hKey ) ; }// CREATE SERVER NODE {// CREATE STANDARD SUB NODES & VALUSE INT k = 0 ; for ( ; k < REG_KEYS; k++ ) { TCHAR szKey [ 256 * 2 ] = { 0 } ; //compose full key sprintf ( szKey, TEXT("%s%s"), REGISTRYKEY_SERVER_NAME, szRegisterKey [ k ] ) ; // create... lRet = RegCreateKeyEx ( HKEY_CLASSES_ROOT, szKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDispos ) ; // set default value if ( lRet == ERROR_SUCCESS ) { RegSetValueEx ( hKey, TEXT(""), 0, REG_SZ, ( BYTE* CONST ) ( szRegisterKeyDefaultValues [ k ] ), ( lstrlen ( szRegisterKeyDefaultValues [ k ] ) + 1 ) * sizeof ( TCHAR ) ) ; } else { fRet = FALSE ; } // close key handle RegCloseKey ( hKey ) ; } }// CREATE STANDARD SUB NODES & VALUSE return fRet ; } VOID RegisterAppKey ( HINSTANCE hInstance ) { CHAR szFullFileName [256] = {0} ; CHAR szShortFileName [256] = {0} ; CHAR * pszPathName = NULL ; {// RETRIEVE PATH NAME DWORD dwRet ; // full file name GetModuleFileName ( hInstance, szFullFileName, 256 ) ; dwRet = GetShortPathName ( szFullFileName, szShortFileName, 256 ) ; if ( ERROR_INVALID_PARAMETER == dwRet ) { pszPathName = szFullFileName ; } else { pszPathName = szShortFileName ; } }// RETRIEVE PATH NAME {// REGISTER [BASIC] SERVER NAME TCHAR szDefaultIcon [256*2] = {0}; TCHAR szOpen [256*2] = {0}; // Open STRING sprintf ( szOpen, TEXT ( "\"%s\" \"%%1\""), pszPathName ) ; // default icon sprintf ( szDefaultIcon, TEXT("%s,%d"), pszPathName, -IDR_MAINFRAME ) ; CreateStandardServerRegisteryEntry ( REGISTRYKEY_SERVER_NAME, szOpen, szDefaultIcon ) ; }// REGISTER [BASIC] SERVER NAME }