/*[]=====================================================================[]*/ /*[] FRAME Run Time Library - Version 13 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2003 by LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ #define STRICT #include #include #include "BarCode.h" static VOID FRAME_OnCommand (HWND hWnd, int id, HWND hwndCtl, UINT codeNotify); static VOID FRAME_OnInitMenuPopup (HWND hWnd, HMENU hMenu, L_INT nItem, BOOL fSystemMenu); static VOID FRAME_OnDestroy (HWND hWnd); static BOOL FRAME_OnCreate (HWND hWnd, CREATESTRUCT FAR * lpCreateStruct); static VOID FRAME_OnClose (HWND hWnd); static BOOL FRAME_OnQueryNewPalette (HWND hwnd); static VOID FRAME_OnPaletteChanged (HWND hwnd, HWND hwndPaletteChange); static VOID FRAME_SysColorChange (HWND hwnd); static VOID FRAME_OnPaletteChanging (HWND hWnd, HWND hWndPaletteChange); static L_VOID TwainAcquire (HWND hwnd); static L_VOID ISISAcquire (HWND hwnd); L_INT OpenBitmap (HWND hWnd); L_INT PasteBitmap (HWND hWnd); HWND CreateChildWindow (L_TCHAR L_FAR * pszTitle, pBITMAPHANDLE pBitmap, L_BOOL bIsFile); L_INT L_FAR L_EXPORT TwainCallBack (HTWAINSESSION hTwain, pBITMAPHANDLE pBitmap, L_VOID L_FAR * pUserData); LRESULT CALLBACK FrameWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { HANDLE_MSG (hwnd, WM_CREATE, FRAME_OnCreate); HANDLE_MSG (hwnd, WM_INITMENUPOPUP, FRAME_OnInitMenuPopup); HANDLE_MSG (hwnd, WM_DESTROY, FRAME_OnDestroy); HANDLE_MSG (hwnd, WM_COMMAND, FRAME_OnCommand); HANDLE_MSG (hwnd, WM_CLOSE, FRAME_OnClose); HANDLE_MSG (hwnd, WM_PALETTECHANGED, FRAME_OnPaletteChanged); HANDLE_MSG (hwnd, WM_QUERYNEWPALETTE, FRAME_OnQueryNewPalette); HANDLE_MSG (hwnd, WM_SYSCOLORCHANGE, FRAME_SysColorChange); HANDLE_MSG (hwnd, WM_PALETTEISCHANGING, FRAME_OnPaletteChanging); } return DefFrameProc (hwnd, hwndClient, message, wParam, lParam); } static VOID FRAME_OnCommand (HWND hWnd, int id, HWND hwndCtl, UINT codeNotify) { HWND hwndChild; switch (id) { case IDM_FILE_OPEN: OpenBitmap(hWnd); return; case IDM_FILE_CLOSE: hwndChild = (HWND) SendMessage(hwndClient, WM_MDIGETACTIVE, 0, 0); if (SendMessage(hwndChild, WM_QUERYENDSESSION, 0, 0)) SendMessage (hwndClient, WM_MDIDESTROY, (WPARAM) hwndChild, 0); return; case IDM_FILE_TWAINSELECT: { HTWAINSESSION hTwain=NULL; APPLICATIONDATA AppData; AppData.hWnd = hWnd; lstrcpy (AppData.szManufacturerName, TEXT("LEAD Technologies, Inc.")); lstrcpy (AppData.szAppProductFamily, TEXT("LEAD Demo")); lstrcpy (AppData.szVersionInfo, TEXT("Version 1.0")); lstrcpy (AppData.szAppName, TEXT("LEAD Demo")); AppData.uStructSize = sizeof(APPLICATIONDATA); L_TwainInitSession (&hTwain, &AppData); L_TwainSelectSource (hTwain, NULL); L_TwainEndSession (&hTwain); } return; case IDM_FILE_TWAINACQUIRE: TwainAcquire(hWnd); return; #ifndef UNICODE case IDM_FILE_ISISSELECT: L_ISISSelect(hWnd, NULL); return; case IDM_FILE_ISISACQUIRE: ISISAcquire(hWnd); return; #endif case IDM_FILE_EXIT: SendMessage(hWnd, WM_CLOSE, 0, 0); return; case IDM_EDIT_PASTE: PasteBitmap(hWnd); return; case IDM_WINDOW_TILE: SendMessage(hwndClient, WM_MDITILE, 0, 0); return; case IDM_WINDOW_CASCADE: SendMessage(hwndClient, WM_MDICASCADE, 0, 0); return; case IDM_WINDOW_ARRANGE: SendMessage(hwndClient, WM_MDIICONARRANGE, 0, 0); return; case IDM_WINDOW_CLOSEALL: EnumChildWindows(hwndClient, CloseEnumProc, 0); return; case IDM_HELP_ABOUT: DoDialogBoxParam(IDD_ABOUTBOX, hWnd, (DLGPROC) AboutDlgProc, 0); return; default: hwndChild = (HWND) SendMessage (hwndClient, WM_MDIGETACTIVE, 0, 0); if (IsWindow (hwndChild)) SendMessage(hwndChild, WM_COMMAND, MAKEWPARAM((UINT)(id),(UINT)(codeNotify)), (LPARAM)(HWND)(hwndCtl)); break; } DefFrameProc(hWnd, hwndClient, WM_COMMAND, MAKEWPARAM((UINT)(id),(UINT)(codeNotify)), (LPARAM)(HWND)(hwndCtl)); } static BOOL FRAME_OnCreate (HWND hWnd, CREATESTRUCT FAR * lpCreateStruct) { CLIENTCREATESTRUCT clientcreate; clientcreate.hWindowMenu = hMenuInitWindow; clientcreate.idFirstChild = IDM_FIRSTCHILD; L_DlgInit(DLG_INIT_COLOR); hwndClient = CreateWindow(TEXT ("MDICLIENT"), NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, (HMENU) 1, hInstMain, (PSTR) &clientcreate); if (hwndClient) { L_BarCodeInit (BARCODES_1D | BARCODES_2D_READ | BARCODES_2D_WRITE | BARCODES_PDF_READ | BARCODES_PDF_WRITE | BARCODES_QR_READ | BARCODES_QR_WRITE); UNLOCKSUPPORT(); #ifndef UNICODE bISISAvailable = L_IsISISAvailable(); #endif //UNICODE bTWAINAvailable = L_IsTwainAvailable(hWnd); nDupIndex = 0; bIsDuplicated = FALSE; InitRWDialogs(); bLMDown = FALSE; } return ((hwndClient) ? TRUE : FALSE); } static VOID FRAME_OnInitMenuPopup (HWND hWnd, HMENU hMenu, L_INT nItem, BOOL fSystemMenu) { L_BOOL bClipboardReady; bClipboardReady = L_ClipboardReady(); EnableMenuItem(hMenu, IDM_FILE_TWAINSELECT, MF_BYCOMMAND | ((bTWAINAvailable) ? MF_ENABLED : MF_GRAYED)); EnableMenuItem(hMenu, IDM_FILE_TWAINACQUIRE, MF_BYCOMMAND | ((bTWAINAvailable) ? MF_ENABLED : MF_GRAYED)); EnableMenuItem(hMenu, IDM_FILE_ISISSELECT, MF_BYCOMMAND | ((bISISAvailable) ? MF_ENABLED : MF_GRAYED)); EnableMenuItem(hMenu, IDM_FILE_ISISACQUIRE, MF_BYCOMMAND | ((bISISAvailable) ? MF_ENABLED : MF_GRAYED)); EnableMenuItem(hMenu, IDM_EDIT_PASTE, MF_BYCOMMAND | ((bClipboardReady) ? MF_ENABLED : MF_GRAYED)); } static VOID FRAME_OnClose (HWND hWnd) { FORWARD_WM_COMMAND (hWnd, IDM_WINDOW_CLOSEALL, 0, 0, SendMessage); DestroyWindow (hWnd); } static VOID FRAME_OnDestroy (HWND hWnd) { if (BarCodeData.pszBarCodeData) GlobalFreePtr(BarCodeData.pszBarCodeData); L_DlgFree(); L_BarCodeExit(); PostQuitMessage (0); } L_VOID CleanOpenDlgParam(LPOPENDLGPARAMS pFOParam) { int i=0; if(pFOParam!=NULL && pFOParam->pFileData!= NULL ) { for(i=0; i < pFOParam->nNumOfFiles; ++i ) { if(pFOParam->pFileData[i].pBitmap != NULL) { L_FreeBitmap(pFOParam->pFileData[i].pBitmap); GlobalFreePtr(pFOParam->pFileData[i].pBitmap); } if(pFOParam->pFileData[i].pThumbnail != NULL) { L_FreeBitmap(pFOParam->pFileData[i].pThumbnail); GlobalFreePtr(pFOParam->pFileData[i].pThumbnail); } if(pFOParam->pFileData[i].pFileInfo != NULL) { GlobalFreePtr(pFOParam->pFileData[i].pFileInfo); } } GlobalFreePtr(pFOParam->pFileData); pFOParam->pFileData =NULL; pFOParam->nNumOfFiles = 0; } } L_INT OpenBitmap(HWND hWnd) { HCURSOR hOldCur; OPENFILENAME OpenFileName; LOADFILEOPTION LoadFileOpt; BITMAPHANDLE Bitmap; OPENDLGPARAMS foParm; L_INT nRet; HWND hChldWnd; memset(&OpenFileName, 0, sizeof(OPENFILENAME)); memset(&foParm, 0, sizeof(OPENDLGPARAMS)); foParm.uStructSize = sizeof(OPENDLGPARAMS); OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.hwndOwner = hWnd; OpenFileName.lpstrFilter = NULL; OpenFileName.lpstrCustomFilter = NULL; OpenFileName.nMaxCustFilter = 0; OpenFileName.nFilterIndex = 0; OpenFileName.lpstrFileTitle = NULL; OpenFileName.nMaxFileTitle = 0; OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = TEXT("Open a File"); OpenFileName.nFileOffset = 0; OpenFileName.nFileExtension = 0; OpenFileName.lpstrDefExt = NULL; OpenFileName.lpfnHook = NULL; OpenFileName.Flags = 0; foParm.uDlgFlags = DLG_OPEN_SHOW_MULTIPAGE | DLG_OPEN_SHOW_FILEINFO | DLG_OPEN_SHOW_PREVIEW; nRet = L_DlgOpen(hWnd, &OpenFileName, &foParm); if (nRet == SUCCESS_DLG_OK) { hOldCur = SetCursor(LoadCursor(NULL, IDC_WAIT)); L_GetDefaultLoadFileOption(&LoadFileOpt, sizeof(LOADFILEOPTION)); LoadFileOpt.PageNumber = foParm.pFileData[0].nPageNumber; nRet = L_LoadBitmap(foParm.pFileData[0].szFileName, &Bitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGRORGRAY, &LoadFileOpt, NULL); if (nRet == SUCCESS) hChldWnd = CreateChildWindow(foParm.pFileData[0].szFileName, &Bitmap, TRUE); else if(nRet == ERROR_PDF_BAD_INITIALIZATION_FILES) { if( IDYES == MessageBox ( hWnd,TEXT("LEADTOOLS PDF plugin is not found, do you want to download the plugin now?"), TEXT("Open File"),MB_ICONEXCLAMATION | MB_YESNO)) { ShellExecute(hWnd, TEXT("open"), TEXT("http://www.leadtools.com/ReleaseDownloads/v14/LEADTOOLSPDFRuntime.exe"), NULL, NULL, SW_SHOWNORMAL); } } SetCursor(hOldCur); CleanOpenDlgParam(&foParm); } return nRet; } HWND CreateChildWindow(L_TCHAR L_FAR * pszTitle, pBITMAPHANDLE pBitmap, L_BOOL bIsFile) { MDICREATESTRUCT mdiCreateStruct; CREATEDATA CreateData; HWND hWndChild; CreateData.pszTitle = pszTitle; CreateData.pBitmap = pBitmap; CreateData.bIsFile = bIsFile; mdiCreateStruct.szClass = szChildClass; mdiCreateStruct.szTitle = pszTitle; mdiCreateStruct.hOwner = hInstMain; mdiCreateStruct.x = CW_USEDEFAULT; mdiCreateStruct.y = CW_USEDEFAULT; mdiCreateStruct.cx = CW_USEDEFAULT; mdiCreateStruct.cy = CW_USEDEFAULT; mdiCreateStruct.style = MDIS_ALLCHILDSTYLES|WS_CLIPCHILDREN; mdiCreateStruct.lParam = (LPARAM) (LPCREATEDATA) & CreateData; hWndChild = (HWND) SendMessage(hwndClient, WM_MDICREATE, 0, (LPARAM) (LPMDICREATESTRUCT) &mdiCreateStruct); return(hWndChild); } static L_VOID TwainAcquire(HWND hwnd) { BITMAPHANDLE Bitmap; HCURSOR hOldCur; L_INT nRet; L_TCHAR szErr[256]; HTWAINSESSION hTwain=NULL; APPLICATIONDATA AppData; hOldCur = SetCursor (LoadCursor (NULL, IDC_WAIT)); AppData.hWnd = hwnd; lstrcpy (AppData.szManufacturerName, TEXT("LEAD Technologies, Inc.")); lstrcpy (AppData.szAppProductFamily, TEXT("LEAD Demo")); lstrcpy (AppData.szVersionInfo, TEXT("Version 1.0")); lstrcpy (AppData.szAppName, TEXT("LEAD Demo")); AppData.uStructSize = sizeof(APPLICATIONDATA); L_TwainInitSession (&hTwain, &AppData); nRet = L_TwainAcquire (hTwain, &Bitmap, sizeof(BITMAPHANDLE), TwainCallBack, LTWAIN_SHOW_USER_INTERFACE|LTWAIN_MODAL_USER_INTERFACE, NULL, NULL); L_TwainEndSession (&hTwain); if (nRet != SUCCESS) { memset(szErr, 0, sizeof(szErr)); wsprintf(szErr, TEXT("An error occurred in TWAIN Acquire...\nError No: %d\n"), nRet); MessageBox(hwnd, szErr, TEXT("Error!"), MB_OK); } SetCursor(hOldCur); } L_INT L_FAR L_EXPORT TwainCallBack (HTWAINSESSION hTwain, pBITMAPHANDLE pBitmap, L_VOID L_FAR * pUserData) { static L_INT nTwainNo = 0; L_TCHAR szTitle[256]; HCURSOR hOldCur; UNREFERENCED_PARAMETER(hTwain); UNREFERENCED_PARAMETER(pUserData); memset(szTitle, 0, sizeof(szTitle)); wsprintf(szTitle, TEXT("Twain Data: %d"), ++nTwainNo); hOldCur = SetCursor(LoadCursor(NULL, IDC_WAIT)); CreateChildWindow(szTitle, pBitmap, FALSE); SetCursor (hOldCur); return(SUCCESS); } static L_VOID ISISAcquire(HWND hwnd) { static L_INT nISISNo = 0; BITMAPHANDLE Bitmap; HCURSOR hOldCur; L_TCHAR szBuffer[256]; L_INT nRet; hOldCur = SetCursor(LoadCursor (NULL, IDC_WAIT)); nRet = L_ISISLoadDriver(NULL); if (nRet == SUCCESS) { nRet = L_ISISAcquire(hwnd, &Bitmap, sizeof(BITMAPHANDLE), ISIS_SHOWUI); L_ISISUnloadDriver(); } memset(szBuffer, 0, sizeof(szBuffer)); if (nRet != SUCCESS) { wsprintf(szBuffer, TEXT("An error occurred in ISIS Acquire...\nError No: %d\n"), nRet); MessageBox(hwnd, szBuffer, TEXT("Error!"), MB_OK); } else { wsprintf(szBuffer, TEXT("ISIS Data: %d"), ++nISISNo); CreateChildWindow(szBuffer, &Bitmap, FALSE); L_FreeBitmap(&Bitmap); } SetCursor (hOldCur); } L_INT PasteBitmap(HWND hWnd) { static L_INT nPasteNo = 0; HCURSOR hOldCur; BITMAPHANDLE Bitmap; L_TCHAR szBuffer[256]; L_BOOL bRet; hOldCur = SetCursor(LoadCursor(NULL, IDC_WAIT)); L_InitBitmap(&Bitmap, sizeof(BITMAPHANDLE), 0, 0, 0); bRet = L_CopyFromClipboard(hWnd, &Bitmap, sizeof(BITMAPHANDLE)); if (bRet == TRUE) { memset(szBuffer, 0, sizeof(szBuffer)); wsprintf(szBuffer, TEXT("Clipboard Data: %d"), ++nPasteNo); CreateChildWindow(szBuffer, &Bitmap, FALSE); L_FreeBitmap(&Bitmap); } SetCursor(hOldCur); return bRet; } L_BOOL CALLBACK L_EXPORT PaletteChangedAll (HWND hWnd, LPARAM lParam) { if(GetParent(hWnd)!=hwndClient) return(TRUE); if (GetWindow (hWnd, GW_OWNER)) return(TRUE); FORWARD_WM_PALETTECHANGED (hWnd, (HWND) (UINT) (lParam), SendMessage); return(TRUE); } L_BOOL CALLBACK L_EXPORT PaletteQueryAll(HWND hWnd, LPARAM lParam) { if(GetParent(hWnd)!=hwndClient) return(TRUE); FORWARD_WM_QUERYNEWPALETTE (hWnd, SendMessage); return(TRUE); } static BOOL FRAME_OnQueryNewPalette (HWND hwnd) { HWND hWndChild = FORWARD_WM_MDIGETACTIVE (hwndClient, SendMessage); UNREFERENCED_PARAMETER(hwnd); if (IsWindow (hWndChild)) FORWARD_WM_QUERYNEWPALETTE (hWndChild, SendMessage); return(TRUE); } static VOID FRAME_OnPaletteChanged (HWND hWnd, HWND hWndPaletteChange) { FARPROC lpfn = MakeProcInstance ((FARPROC) PaletteChangedAll, hInst); UNREFERENCED_PARAMETER(hWnd); EnumChildWindows (hwndClient, (WNDENUMPROC) lpfn, (LPARAM) (UINT) hWndPaletteChange); FreeProcInstance (lpfn); return; } static VOID FRAME_SysColorChange(HWND hwnd) { FARPROC lpfn = MakeProcInstance ((FARPROC) PaletteQueryAll, hInst); EnumChildWindows (hwndClient, (WNDENUMPROC) lpfn, 0); FreeProcInstance (lpfn); FRAME_OnQueryNewPalette (hwnd); return; } VOID FRAME_OnPaletteChanging(HWND hWnd, HWND hWndPaletteChange) { FRAME_OnPaletteChanged (hWnd, hWndPaletteChange); }