/*[]=====================================================================[]*/ /*[] LeadTools Run Time Library - Version 12 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2001 LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ #include #include #include #include #include "resource.h" #include #include #include "global.h" #include /************************************/ /* Macro's definition */ /************************************/ #define Progress_SetRange(hwnd, low, high) \ (LRESULT)SendMessage((hwnd), PBM_SETRANGE, (WPARAM) 0, (LPARAM)MAKELONG((low), (high))) #define Progress_SetPos(hwnd, pos) \ (int)SendMessage((hwnd), PBM_SETPOS, (WPARAM)(pos), 0) #define USERSTRUCTA USERSTRUCT #define GETHBRBACKGROUND(hwnd) ((HBRUSH) GetClassLong(hwnd, GCL_HBRBACKGROUND)) #define RECTWIDTH(lpRect) (((LPRECT) lpRect)->right - ((LPRECT) lpRect)->left) #define RECTHEIGHT(lpRect) (((LPRECT) lpRect)->bottom - ((LPRECT) lpRect)->top) #define L_SRCCOPY (CB_DST_0 | CB_OP_OR) #define ENABLEMENUITEM(hMenu, wID, fFlag) EnableMenuItem(hMenu, (UINT)wID, (UINT)MF_BYCOMMAND | ((fFlag) ? MF_ENABLED : (MF_DISABLED | MF_GRAYED))) #define CHECKMENUITEM(hMenu, wID, fFlag) CheckMenuItem(hMenu, (UINT)wID, (UINT)MF_BYCOMMAND | ((fFlag) ? MF_CHECKED : MF_UNCHECKED)) /************************************/ /* Function's Prototypes */ /************************************/ static BOOL LEADTOOLS_OnCreateDemo(HWND hWnd, CREATESTRUCT FAR * lpCreateStruct); static VOID LEADTOOLS_OnPaint (HWND hWnd); static VOID LEADTOOLS_OnDestroy (HWND hWnd); static VOID LEADTOOLS_OnCommand (HWND hWnd, int id, HWND hwndCtl, UINT codeNotify); L_INT L_EXPORT StatusCallBack (L_INT nPercent, L_VOID L_FAR *pUserData); L_INT GetSourcePath(HWND hWnd,HWND hwndCtl); L_INT GetDistPath(LPSTR SelectedPath); L_INT SaveBitmapFile (HWND hWnd, pBITMAPHANDLE pBitmapHandle,L_CHAR FileName[]); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) ; L_BOOL OpenTheFile( HWND hWnd, pBITMAPHANDLE pBitmap1); L_BOOL CALLBACK AboutDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam); L_VOID ShowAboutDlg(HWND hWnd,HWND hwndCtl); L_VOID BatchConvert(HWND hWnd,HWND hwndCtl); L_BOOL CALLBACK ReportDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam); L_VOID ShowReportDlg(HWND hWnd,HWND hwndCtl); L_VOID GetFileExt ( ); /************************************/ /* Global Variables */ /************************************/ pUSERSTRUCT pData; //BITMAPHANDLE TmpBitmap1,TmpBitmap2 ; BITMAPHANDLE Bitmap; L_BOOL bInProcess=FALSE; /*====(WinMain)============================================================ Description: Main windows function required for all windows applications. Syntax : int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iComShow) Prototype : windows.h Parameters : hInstance Handle to current instance of application. hPrevInstance Handle to previous instance of application. szCmdLine Pointer to the Command Line. iCmdShow Integer used in ShowWindow. Return Value: The return value the user specify in wParam when send WM_QUIT message, or the paramter in PostQuitMessage. ==========================================================================*/ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT ("FILECONV") ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = DLGWINDOWEXTRA ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (hInstance,MAKEINTRESOURCE (IDI_MAIN) ) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE+1) ; wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("RegisterClass failed!"), szAppName, MB_ICONERROR) ; return 0 ; } UNLOCKSUPPORT(); hwnd = CreateDialog (hInstance,MAKEINTRESOURCE (FILECONV),0,NULL) ; ShowWindow (hwnd, iCmdShow) ; L_DlgInit(DLG_INIT_COLOR); while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } L_DlgFree(); return msg.wParam ; } /*====(WndProc)=================================================== Description: Handles all messages dispatched to the window. Syntax : LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) Parameters : hWnd Handle to a window. message Windows message structure. wParam Windows word parameter. lParam Windows long parameter. Return Value: This is specific for each message. See Windows Programmer's Reference Volume 3. ==========================================================================*/ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { HANDLE_MSG (hWnd, WM_CREATE, LEADTOOLS_OnCreateDemo); HANDLE_MSG (hWnd, WM_PAINT, LEADTOOLS_OnPaint); HANDLE_MSG (hWnd, WM_DESTROY, LEADTOOLS_OnDestroy); HANDLE_MSG (hWnd, WM_COMMAND, LEADTOOLS_OnCommand); } return DefWindowProc (hWnd, message, wParam, lParam) ; } /*====(SaveBitmapFile)====================================================== Description: Saving the bitmap file. Syntax : L_INT SaveBitmapFile (HWND hWnd, pBITMAPHANDLE pBitmapHandle) Parameters : hWnd Handle to the window. pBitmapHandle the bitmap Return Value: SUCCESS or error code. ==========================================================================*/ L_INT SaveBitmapFile (HWND hWnd, pBITMAPHANDLE pBitmapHandle,L_TCHAR FileName[]) { L_TCHAR TmpStr[L_MAXPATH]; L_TCHAR szFileName[L_MAXPATH]=TEXT(""); lstrcpy(TmpStr, TEXT("\0")); pData->uFlags=0; HCURSOR hCursor; L_INT nRet; L_UINT uFormatIndex=0; lstrcpy(pData->szFile,FileName); _fmemset(&pData->SaveFileName, 0, sizeof(OPENFILENAME)); _fmemset(&pData->FSParm, 0, sizeof(SAVEDLGPARAMS)); pData->FSParm.nQFactor = 2; pData->FSParm.uStructSize = sizeof(SAVEDLGPARAMS); pData->SaveFileName.lStructSize = sizeof(OPENFILENAME); pData->SaveFileName.lpstrInitialDir = NULL;//pData->DistPath; pData->SaveFileName.lpstrTitle = TEXT("Convert Options"); pData->SaveFileName.lpstrFile = szFileName; pData->SaveFileName.lpstrFileTitle = pData->FSParm.szFileName; pData->SaveFileName.nMaxFileTitle = sizeof(pData->FSParm.szFileName)/sizeof(L_TCHAR); pData->SaveFileName.nFileOffset = 0; pData->SaveFileName.Flags = 0; nRet = L_DlgSave(hWnd,&pData->SaveFileName,&pData->FSParm); if(nRet == SUCCESS_DLG_OK) { L_GetDefaultSaveFileOption(&pData->SaveFileOption, sizeof(SAVEFILEOPTION)); pData->SaveFileOption.Flags &= ~(ESO_REPLACEPAGE|ESO_INSERTPAGE); switch(pData->FSParm.uSaveMulti) { case MULTIPAGE_OPERATION_OVERWRITE: pData->SaveFileOption.PageNumber = 1; break; case MULTIPAGE_OPERATION_APPEND: pData->SaveFileOption.PageNumber = 2; break; case MULTIPAGE_OPERATION_REPLACE: pData->SaveFileOption.PageNumber = pData->FSParm.nPageNumber; pData->SaveFileOption.Flags |= ESO_REPLACEPAGE; break; case MULTIPAGE_OPERATION_INSERT: pData->SaveFileOption.PageNumber = pData->FSParm.nPageNumber; pData->SaveFileOption.Flags |= ESO_INSERTPAGE; break; } hCursor = SetCursor (LoadCursor (NULL, IDC_WAIT)); if (pData->FSParm.nBitsPerPixel <= 4 && pBitmapHandle->BitsPerPixel != pData->FSParm.nBitsPerPixel) pData->uFlags = SAVEFILE_FIXEDPALETTE; else pData->uFlags = SAVEFILE_OPTIMIZEDPALETTE; lstrcpy(pData->szFile,pData->FSParm.szFileName); return (TRUE); } return (0); } /*====(AboutDlgProc)=================================================== Description: Handles all messages dispatched to the About Dailog Box. Syntax : L_VOID CALLBACK AboutDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) Parameters : hWnd Handle to a Dlgbox. message Windows message structure. wParam Windows word parameter. lParam Windows long parameter. Return Value: TRUE if handle the message , and FALSE if the message not handled . ==========================================================================*/ L_BOOL CALLBACK AboutDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: EndDialog(hDlg,0); return TRUE; } } return FALSE; } /*====(LEADTOOLS_OnCreate)======================================================== Description: Creates a client window in response to WM_CREATE from the frame window. Syntax : BOOL LEADTOOLS_OnCreate(HWND hWnd, CREATESTRUCT FAR* lpCreateStruct) Parameters : hWnd Handle to current window. lpCreateStruct pointer to CREATESTRUCT Return Value: TRUE The function was successful in creating window. FALSE The function was not successful. ==========================================================================*/ BOOL LEADTOOLS_OnCreateDemo (HWND hWnd, CREATESTRUCT FAR * lpCreateStruct) { pData=new tagUSERSTRUCTA(); pData->hIns=lpCreateStruct->hInstance; lstrcpy(pData->DistPath, TEXT("\0")); lstrcpy(pData->SourcePath, TEXT("\0")); lstrcpy(pData->DistType, TEXT("\0")); lstrcpy(pData->SourceType, TEXT("\0")); pData->lpfnStatusCB = StatusCallBack; L_SetStatusCallBack (pData->lpfnStatusCB, NULL,NULL,NULL); pData->hWndParent=hWnd; UNREFERENCED_PARAMETER(lpCreateStruct); return TRUE; } /*====(LEADTOOLS_OnDestroy)================================================= Description: Performs cleanup for the program, and posts WM_QUIT to terminate the application. Syntax : VOID LEADTOOLS_OnDestroy(HWND hWnd) Parameters : hWnd Handle to a window. Return Value: None. ==========================================================================*/ VOID LEADTOOLS_OnDestroy (HWND hWnd) { UNREFERENCED_PARAMETER(hWnd); PostQuitMessage (0); return; } /*====(LEADTOOLS_OnPaint)====================================================== Description: Paints on the window. Syntax : VOID Child_OnPaint(HWND hWnd) Parameters : hWnd Handle of the window. Return Value: None. ==========================================================================*/ static VOID LEADTOOLS_OnPaint (HWND hWnd) { UNREFERENCED_PARAMETER(hWnd); L_TCHAR TmpStr[L_MAXPATH]; L_TCHAR TmpStr2[L_MAXPATH]; lstrcpy(TmpStr2, TEXT("\0")); lstrcpy(TmpStr, TEXT("\0")); PAINTSTRUCT ps; HDC hDc; hDc = BeginPaint (hWnd, &ps); if((lstrlen(lstrcat(lstrcat(TmpStr,pData->SourcePath),pData->SourceType))>4)) EnableWindow(GetDlgItem(hWnd,IDOK),TRUE); else EnableWindow(GetDlgItem(hWnd,IDOK),FALSE); EndPaint (hWnd, &ps); } /*====(LEADTOOLS_OnCommand )======================================================== Description: Loads the image from file Syntax : static VOID LEADTOOLS_OnCommand (HWND hWnd, int id, HWND hwndCtl, UINT codeNotify) Parameters : hWnd Handle to a window. id LOWORD(wParam) "Menu item id" hwndCtl (HWND) lParam. Return Value: None. ==========================================================================*/ static VOID LEADTOOLS_OnCommand (HWND hWnd, int id, HWND hwndCtl, UINT codeNotify) { L_TCHAR TmpStr[L_MAXPATH]; lstrcpy(TmpStr, TEXT("\0")); switch (id) { case IDCANCEL: PostQuitMessage(0) ; break ; case IDABOUT: ShowAboutDlg(hWnd,hwndCtl); break; case IDC_BROWSES: if(GetSourcePath(hWnd,hwndCtl)) SetDlgItemText(hWnd,IDC_SOURCE,lstrcat(lstrcat(TmpStr,pData->SourcePath),pData->SourceType)); UpdateWindow(hWnd); break; case IDOK: BatchConvert(hWnd,hwndCtl); break ; } } /*====(ShowAboutDlg)============================================== Description: Show about dailog box Syntax : L_VOID ShowAboutDlg(HWND hWnd, HWND hwndCtl) Parameters : hWnd Handle to window. hwndCtl Handle to dailog box Return Value: None. ==========================================================================*/ L_VOID ShowAboutDlg(HWND hWnd,HWND hwndCtl) { DLGPROC pfn; L_INT nRet; pfn = (DLGPROC) MakeProcInstance((FARPROC) AboutDlgProc, pData->hIns); nRet = DialogBoxParam (pData->hIns, MAKEINTRESOURCE (AboutDlg), hWnd, pfn,(LPARAM) hwndCtl); FreeProcInstance((FARPROC) pfn); } /*====(GetSourcePath)============================================== Description: Get The Source Path From L_DlgGetDirectory . Syntax : L_INT GetSourcePath(HWND hWnd, HWND hwndCtl) Parameters : hWnd Handle to window. hwndCtl Handle to dailog box Return Value: 1 If SUCCESS , 0 If Failed. ==========================================================================*/ L_INT GetSourcePath(HWND hWnd,HWND hwndCtl) { L_TCHAR szDir[MAX_PATH] = TEXT("C:"); GETDIRECTORYDLGPARAMS DlgParams; memset(&DlgParams, 0,sizeof(GETDIRECTORYDLGPARAMS)); DlgParams.uStructSize = sizeof(GETDIRECTORYDLGPARAMS); DlgParams.pszDirectory = szDir; DlgParams.nBuffSize = L_MAXPATH; DlgParams.pszFilter = TEXT("ALL\0*.*\0LEAD\0*.cmp\0JPEG\0*.JPG\0Bitmap\0*.bmp\0Gif\0*.gif\0\0"); DlgParams.nFilterIndex = 0; DlgParams.pszTitle = TEXT("Select a Source Directory Please"); if(L_DlgGetDirectory(hWnd, &DlgParams)==SUCCESS_DLG_OK) { lstrcpy(pData->SourcePath, DlgParams.pszDirectory); if(lstrlen(pData->SourcePath)>4) lstrcpy(pData->SourcePath,lstrcat(pData->SourcePath,TEXT("\\"))); switch(DlgParams.nFilterIndex) { case 1: lstrcpy(pData->SourceType, TEXT("*.*\0")); break; case 2: lstrcpy(pData->SourceType, TEXT("*.cmp\0")); break; case 3: lstrcpy(pData->SourceType, TEXT("*.jpg\0")); break; case 4: lstrcpy(pData->SourceType, TEXT("*.bmp\0")); break; case 5: lstrcpy(pData->SourceType, TEXT("*.gif\0")); break; } return 1; } return 0; } /*====(GetDistPath)======================================================= Description: Get the distination path from the input parameter Syntax : L_INT GetDistPath(LPSTR SelectedPath) Parameters : SourcePath Selected path from save form "with the file name" Return Value: 1 if SUCCESS , 0 if Failed. ==========================================================================*/ L_INT GetDistPath(LPTSTR SelectedPath) { L_TCHAR temp[L_MAXPATH]; lstrcpy(temp,SelectedPath); for (L_INT nCount=lstrlen(SelectedPath);nCount>0;--nCount) { if(temp[nCount]!='\\') temp[nCount]=' '; else { temp[nCount+1]='\0'; lstrcpy(pData->DistPath,temp); return 1; } } return 0; } /*====(BatchConvert)============================================== Description: Convert the file in the Source path , to Distination paht with selected type. Syntax : L_VOID BatchConvert(HWND hWnd, HWND hwndCtl) Parameters : hWnd Handle to window. hwndCtl Handle to dailog box Return Value: None . ==========================================================================*/ L_VOID BatchConvert(HWND hWnd,HWND hwndCtl) { HANDLE hFindFile; L_TCHAR buf[90],szTemp[100]; L_TCHAR TmpStr[L_MAXPATH]; L_TCHAR szInputFile[L_MAXPATH]; L_INT FileSize; WIN32_FIND_DATA FindFileData; HWND hWnd1; L_TCHAR TmpPath[L_MAXPATH]=TEXT("\0"); L_INT nCount = 0,nIndex=1; LV_ITEM item; lstrcpy(TmpStr, TEXT("\0")); lstrcat(lstrcat(TmpStr,pData->SourcePath),pData->SourceType); hFindFile=FindFirstFile(TmpStr,&FindFileData); lstrcpy(TmpStr, TEXT("\0")); int LL=L_LoadBitmap (lstrcat(lstrcat(TmpStr,pData->SourcePath),FindFileData.cFileName), &Bitmap, sizeof(BITMAPHANDLE),0, ORDER_BGR, NULL, NULL); while ((LL!=SUCCESS)&&(FindNextFile(hFindFile,&FindFileData)) ) { if(FindFileData.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY) { lstrcpy(TmpStr, TEXT("\0")); LL=L_LoadBitmap (lstrcat(lstrcat(TmpStr,pData->SourcePath),FindFileData.cFileName), &Bitmap, sizeof(BITMAPHANDLE),0, ORDER_BGR, NULL, NULL); } } if(LL==SUCCESS) { if(SaveBitmapFile (hWnd,&Bitmap,FindFileData.cFileName)==0) return ; FileSize=lstrlen(pData->FSParm.szFileName); GetFileExt ( ); //lstrcpy(pData->DistType,(pData->SaveFileName).lpstrDefExt); L_INT Test=GetDistPath(pData->FSParm.szFileName); ShowReportDlg(hWnd,hwndCtl); hWnd1 = GetDlgItem (pData->hReportDlg, ReportList); EnableWindow(hWnd,FALSE); bInProcess=TRUE; do{ lstrcpy(TmpStr, TEXT("\0")); if(FindFileData.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY) { lstrcpy(pData->szFile,TEXT("\0")); lstrcpy(pData->szFile,pData->DistPath); lstrcat(pData->szFile,FindFileData.cFileName); if(pData->szFile[lstrlen(pData->szFile)-4]=='.') { pData->szFile[lstrlen(pData->szFile)-3]= pData->DistType[lstrlen(pData->DistType)-3]; pData->szFile[lstrlen(pData->szFile)-2]= pData->DistType[lstrlen(pData->DistType)-2]; pData->szFile[lstrlen(pData->szFile)-1]= pData->DistType[lstrlen(pData->DistType)-1]; } else { lstrcat(pData->szFile,TEXT(".")); lstrcat(pData->szFile,pData->DistType); } lstrcpy(szInputFile,pData->SourcePath); lstrcat(szInputFile,FindFileData.cFileName); LL = L_FileConvert( szInputFile, /* Input file */ pData->szFile, /* Output file */ pData->FSParm.nFormat, /* Output File Format */ 0, /* Keep the same width */ 0, /* Keep the same height */ pData->FSParm.nBitsPerPixel, /* bits per pixel */ pData->FSParm.nQFactor, /* No quality factor is used for BMP */ NULL, &pData->SaveFileOption , NULL); if(LL==SUCCESS) { item.mask = LVIF_TEXT ; item.pszText = FindFileData.cFileName; item.iItem = nIndex; item.iSubItem = 0; nIndex = ListView_InsertItem (hWnd1, &item); memset (szTemp, 0 ,64); lstrcpy(szTemp, TEXT("Done")); item.mask = LVIF_TEXT; item.pszText = szTemp; item.iItem = nIndex; item.iSubItem = 1; ListView_SetItem (hWnd1, &item); } else { item.mask = LVIF_TEXT ; item.pszText = FindFileData.cFileName ; item.iItem = nIndex; item.iSubItem = 0; nIndex = ListView_InsertItem (hWnd1, &item); memset (szTemp, 0 ,64); lstrcpy(szTemp, TEXT("Failed")); item.mask = LVIF_TEXT; item.pszText = szTemp; item.iItem = nIndex; item.iSubItem = 1; ListView_SetItem (hWnd1, &item); } nIndex+=1; UpdateWindow(pData->hReportDlg); } }while(FindNextFile(hFindFile,&FindFileData)&& bInProcess); EnableWindow(GetDlgItem(pData->hReportDlg,IDOK),TRUE); EnableWindow(GetDlgItem(pData->hReportDlg,IDCANCEL),FALSE); } else { wsprintf (buf, TEXT("ERROR %d %s."), LL, TEXT("No Files Avilable To Convert ! ")); MessageBox (hWnd, buf, TEXT("ERROR"), MB_OK); } } /*====(ReportDlgProc)=================================================== Description: Handles all messages dispatched to the Report Dailog Box. Syntax : L_VOID CALLBACK ReportDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) Parameters : hDlg Handle to a Dlgbox. message Windows message structure. wParam Windows word parameter. lParam Windows long parameter. Return Value: TRUE if handle the message , and FALSE if the message not handled . ==========================================================================*/ L_BOOL CALLBACK ReportDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_INITDIALOG: { RECT rc,rc2; L_INT nIndex = 0; LV_COLUMN col; HWND hItem = NULL; GetWindowRect(hDlg,&rc); GetClientRect(hDlg,&rc2); SetWindowPos(hDlg,HWND_BOTTOM,((rc.left+rc.right)/2)-(rc2.right/2) , ((rc.top+rc.bottom)/2)-(rc2.bottom/2),0,0,SWP_NOSIZE); hItem = GetDlgItem (hDlg, ReportList); GetClientRect(hItem,&rc); col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; col.fmt = LVCFMT_LEFT; col.cx = (rc.right/3)*2 ; col.pszText = TEXT("File List"); col.iSubItem = 0; ListView_InsertColumn (hItem, 0, &col); col.pszText = TEXT("Status"); col.iSubItem = 1; col.cx = rc.right-((rc.right/3)*2 ); ListView_InsertColumn (hItem, 1, &col); } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: EndDialog(hDlg,0); return TRUE; case IDCANCEL: bInProcess=FALSE; EnableWindow(GetDlgItem(hDlg,IDOK), TRUE); EnableWindow(GetDlgItem(hDlg,IDCANCEL),FALSE); return TRUE; } return TRUE; case WM_DESTROY: EndDialog (hDlg, 0); return TRUE; } return FALSE; } /*====(ShowReportDlg)============================================== Description: Show Report dailog box Syntax : L_VOID ShowReportDlg(HWND hWnd, HWND hwndCtl) Parameters : hWnd Handle to window. hwndCtl Handle to dailog box Return Value: None. ==========================================================================*/ L_VOID ShowReportDlg(HWND hWnd, HWND hwndCtl) { pData->hReportDlg= CreateDialogParam(pData->hIns, MAKEINTRESOURCE(ReportDlg), hWnd, (DLGPROC)ReportDlgProc, (LPARAM)hwndCtl); if(!pData->hReportDlg) { MessageBox(hWnd, TEXT("Error Creating Dialog"), TEXT("Error"), MB_OK); return; } ShowWindow(pData->hReportDlg, SW_SHOW); } /*====(StatusCallBack)============================================== Description:Track The Processes witch come from LEADTOOLS API's Syntax : L_INT L_FAR StatusCallBack (L_INT nPercent, L_VOID L_FAR *pData) Parameters : nPercent How Much Done From The Process. Return Value: SUCCESS Or 0. ==========================================================================*/ L_INT L_EXPORT StatusCallBack (L_INT nPercent, L_VOID L_FAR *pUserData) { MSG msg; HWND hWnd; if (bInProcess) { hWnd = GetDlgItem (pData->hReportDlg, IDC_PROGRESS); while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage (&msg); DispatchMessage (&msg); } if(nPercent==0) { Progress_SetRange(hWnd,0,100); Progress_SetPos(hWnd,0); EnableWindow(pData->hWndParent,FALSE); } pData->ProgressValue=nPercent; if (pData->ProgressValue<100) { Progress_SetPos(hWnd,pData->ProgressValue); InvalidateRect(pData->hWndParent,NULL,FALSE); } else Progress_SetPos(hWnd,0); } return (SUCCESS); } L_VOID GetFileExt ( ) { L_TCHAR * szExtention = NULL ; L_INT i = 0 ; memset (pData->DistType, 0, sizeof(L_TCHAR)*sizeof(pData->DistType)); szExtention = _tcsrchr(pData->FSParm.szFileName, '.' ) ; // Skip the '.' szExtention++; while (*szExtention) { pData->DistType[i] = *szExtention; i++; szExtention++; } }