// MainFrm.cpp : implementation of the CMainFrame class // #include "stdafx.h" #include "PDFCompDemo.h" #include "MainFrm.h" #include "PDFCompDemoDoc.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #ifdef UNICODE #define strprintf swprintf #else #define strprintf sprintf #endif L_VOID PDFCompError(HWND hwnd, L_INT nCode, L_TCHAR* pTitle, L_TCHAR* pFilename); L_INT PDFCompMessageBox (HWND hWnd, L_TCHAR* pCaption, UINT wType, L_TCHAR* pFormat,...); ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() //}}AFX_MSG_MAP END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { // TODO: add member initialization code here L_DlgInit(DLG_INIT_COLOR); } CMainFrame::~CMainFrame() { L_DlgFree(); } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !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: 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); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CMDIFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CMDIFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CMDIFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers L_VOID PDFCompError(HWND hwnd, L_INT nCode, L_TCHAR* pTitle, L_TCHAR* pFilename) { L_TCHAR ErrorBuf[1024]; switch (nCode) { case ERROR_NO_MEMORY: strprintf (ErrorBuf, TEXT("Not enough memory available!")); break; case ERROR_NO_BITMAP: strprintf (ErrorBuf, TEXT("Invalid bitmap handle!")); break; case ERROR_MEMORY_TOO_LOW: strprintf (ErrorBuf, TEXT("Not enough memory available!")); break; case ERROR_FILE_LSEEK: strprintf (ErrorBuf, TEXT("Error seeking to position!")); break; case ERROR_FILE_WRITE: strprintf (ErrorBuf, TEXT("Error writing file!")); break; case ERROR_FILE_GONE: strprintf (ErrorBuf, TEXT("File not present - abort!")); break; case ERROR_FILE_READ: strprintf (ErrorBuf, TEXT("Error reading file!")); break; case ERROR_INV_FILENAME: strprintf (ErrorBuf, TEXT("Invalid filename specified!")); break; case ERROR_FILE_FORMAT: strprintf (ErrorBuf, TEXT("Invalid file format!")); break; case ERROR_FILENOTFOUND: strprintf (ErrorBuf, TEXT("File not found!")); break; case ERROR_INV_RANGE: strprintf (ErrorBuf, TEXT("Invalid width/height!")); break; case ERROR_IMAGE_TYPE: strprintf (ErrorBuf, TEXT("Image format recognized, but sub-type not supported!")); break; case ERROR_INV_PARAMETER: strprintf (ErrorBuf, TEXT("Invalid parameter!")); break; case ERROR_FILE_OPEN: strprintf (ErrorBuf, TEXT("Not able to open file!")); break; case ERROR_UNKNOWN_COMP: strprintf (ErrorBuf, TEXT("Unknown compression format!")); break; case ERROR_FEATURE_NOT_SUPPORTED: strprintf (ErrorBuf, TEXT("Feature not supported!")); break; case ERROR_NOT_256_COLOR: strprintf (ErrorBuf, TEXT("VGA card only supports 256 colors (8 bit)!")); break; case ERROR_PRINTER: strprintf (ErrorBuf, TEXT("Printer error!")); break; case ERROR_CRC_CHECK: strprintf (ErrorBuf, TEXT("Data CRC check error!")); break; case ERROR_QFACTOR: strprintf (ErrorBuf, TEXT("Invalid QFactor specified!")); break; case ERROR_TARGAINSTALL: strprintf (ErrorBuf, TEXT("TARGA not installed!")); break; case ERROR_OUTPUTTYPE: strprintf (ErrorBuf, TEXT("Invalid compression format!")); break; case ERROR_XORIGIN: strprintf (ErrorBuf, TEXT("X origin specified invalid!")); break; case ERROR_YORIGIN: strprintf (ErrorBuf, TEXT("Y origin specified invalid!")); break; case ERROR_VIDEOTYPE: strprintf (ErrorBuf, TEXT("Invalid video mode!")); break; case ERROR_BITPERPIXEL: strprintf (ErrorBuf, TEXT("Invalid bits/pixel!")); break; case ERROR_WINDOWSIZE: strprintf (ErrorBuf, TEXT("Invalid window size!")); break; case ERROR_NORMAL_ABORT: strprintf (ErrorBuf, TEXT("Escape key pressed!")); break; case ERROR_NO_STAMP: strprintf (ErrorBuf, TEXT("Stamp not found!")); break; case ERROR_G3CODE_INVALID: strprintf (ErrorBuf, TEXT("Invalid group 3 data!")); break; case ERROR_G3CODE_EOF: case ERROR_G3CODE_EOL: strprintf (ErrorBuf, TEXT("Group3 code end of code!")); break; case ERROR_PREMATURE_EOF: strprintf (ErrorBuf, TEXT("Premature EOF at scanline!")); break; case ERROR_PREMATURE_EOL: case ERROR_UNCOMP_EOF: case ERROR_ACT_INCOMP: case ERROR_BAD_DECODE_STATE: strprintf (ErrorBuf, TEXT("Premature end-of-line code!")); break; case ERROR_VERSION_NUMBER: strprintf (ErrorBuf, TEXT("Bad version number!")); break; case ERROR_TWAIN_NODSM: strprintf (ErrorBuf, TEXT("Source manager not found!")); break; case ERROR_TWAIN_BUMMER: strprintf (ErrorBuf, TEXT("Failure due to unknown causes!")); break; case ERROR_TWAIN_LOWMEMORY: strprintf (ErrorBuf, TEXT("Not enough memory to perform operation!")); break; case ERROR_TWAIN_NODS: strprintf (ErrorBuf, TEXT("No Data Source!")); break; case ERROR_TWAIN_MAXCONNECTIONS: strprintf (ErrorBuf, TEXT("DS is connected to max possible apps!")); break; case ERROR_TWAIN_OPERATIONERROR: strprintf (ErrorBuf, TEXT("DS or DSM reported error, app shouldn't!")); break; case ERROR_TWAIN_BADCAP: strprintf (ErrorBuf, TEXT("Unknown capability!")); break; case ERROR_TWAIN_BADPROTOCOL: strprintf (ErrorBuf, TEXT("Unrecognized MSG DG DAT combination!")); break; case ERROR_TWAIN_BADVALUE: strprintf (ErrorBuf, TEXT("Data parameter out of range!")); break; case ERROR_TWAIN_SEQERROR: strprintf (ErrorBuf, TEXT("DG DAT MSG out of expected sequence!")); break; case ERROR_TWAIN_BADDEST: strprintf (ErrorBuf, TEXT("Unknown destination App/Src in DSM_Entry!")); break; case ERROR_NOT_ENOUGH_IMAGES: strprintf (ErrorBuf, TEXT("Not enough images to complete the process!")); break; case ERROR_IMAGE_EMPTY: strprintf (ErrorBuf, TEXT("Image is empty!")); break; case ERROR_NO_CHANGE: strprintf (ErrorBuf, TEXT("The image hasn't changed!")); break; case ERROR_LZW_LOCKED: strprintf (ErrorBuf, TEXT("LZW capability is required to load/save this file!")); break; case ERROR_DOCUMENT_NOT_ENABLED: strprintf (ErrorBuf, TEXT("Express capability is required to use this function!")); break; case ERROR_MEDICAL_NOT_ENABLED: strprintf (ErrorBuf, TEXT("Medical Express capability is required to use this function!")); break; case ERROR_JBIG_NOT_ENABLED: strprintf (ErrorBuf, TEXT("JBIG capability is required to use this function!")); break; case ERROR_FPX_FILE_IN_USE: strprintf (ErrorBuf, TEXT("Error accessing file. The file is probably already open!")); break; case ERROR_USER_ABORT: case SUCCESS_DLG_CANCEL: return; break; default: if(nCode >= ERROR_FPX_INVALID_FORMAT_ERROR && nCode <= ERROR_FPX_INVALID_TILE) strprintf (ErrorBuf, TEXT("Internal FlashPix error!")); else strprintf (ErrorBuf, TEXT("Internal or Unrecognized Error!")); break; } PDFCompMessageBox (hwnd, pTitle, MB_ICONEXCLAMATION | MB_OK, TEXT("%s\nLEADTOOLS DLL Error (%d)\n%s"), pFilename, nCode, ErrorBuf); return; } L_INT PDFCompMessageBox (HWND hWnd, L_TCHAR* pCaption, UINT wType, L_TCHAR* pFormat,...) { L_TCHAR szText[256]; va_list ap; va_start (ap, pFormat); wvsprintf (szText, pFormat, ap); va_end (ap); return (MessageBox (hWnd, szText, pCaption, wType)); }