Note: The purpose of this TWAIN tutorial is to provide you a quick and easy way to generate a TWAIN program. For more in depth TWAIN programming, refer to the TWAIN demo.
To acquires images using the LEADTOOLS Fast TWAIN features:
| 1. | Start a new project as follows: | |
| Run Microsoft Visual Studio 2005, select the File -> New -> Project menu option, and do the following: | ||
| a. | Select the Other Languages -> Visual C++ -> MFC. | |
| b. | Select MFC Application as the project type. | |
| c. | In the Project name text box, specify tutor. | |
| d. | In the Location text box, specify the path of the project. | |
| E | Click the OK button, then Click Next button | |
| 2. | In the next dialog box, do the following: | |
| a. | Select Dialog based. | |
| b. | Ensure Use MFC in shared DLL is selected | |
| c. | Click the Finish button. | |
| 3. | Add #include statements to your program so you can access the LEAD Twain DLL functions: | |
| a. | In the Project Workspace, click the FileView tab. | |
| b. | Double-click the tutor files folder to open it. | |
| c. | Double-click the Header Files folder to open it. | |
| d. | Double-click the StdAfx.h file to edit it. | |
| Add the following lines to the end of the file (keep in mind, you may have to change the path to where the dll's reside): | ||
#include "..\..\..\include\l_bitmap.h"
#include "..\..\..\include\lttwn.h"
4. |
Add the LEAD Twain LIB file to your program: |
|
Open tutorDlg.cpp, and add the following line after #include statements: |
#pragma comment(lib, "..\\..\\..\\Lib"L_VER_DESIGNATOR"\\CDLL\\Win32\\Lttwn_u.lib")
| 5. | Add a HTWAINSESSION member to the class and set it to NULL in the constructor. | |
| a. |
Open tutorDlg.h file and add the following line after HICON m_hIcon;
HTWAINSESSION m_hSession; |
|
| b. |
Open tutorDlg.cpp file and add the following line inside CtutorDlg::CtutorDlg
m_hSession = NULL; |
|
| 6. | Go to the Solution Explorer and click the Resource Files, double click the .rc file. Double-click Dialog and double-click IDD_TUTOR_DIALOG to bring up the application's dialog box. | |
| 7. | Add 1 check box. To do this, select the check box control on the Controls toolbar. Then, click and drag to position the button on the dialog box. Then double-click the check box to change its properties. Set the properties as follows: | |
| ID | Caption | |
| IDC_USEBUFFERSIZE | Use Buffer Size | |
| 8. | Add two Radio buttons in addition to the above buttons. | |
| ID | Caption | |
| IDC_NATIVE | Native Mode | |
| IDC_MEMORY | Memory Mode | |
| 9. | Add the following button: | |
| ID | Caption | |
| IDC_ACQUIRE | Fast Acquire | |
| 10. | Add the following two edit boxes and name them as follows: | |
| ID | ||
| IDC_BUFFERSIZE | ||
| IDC_FILENAME | ||
| 11. | Add the following code to the end of OnInitDialog before the return statement: | |
APPLICATIONDATA AppData;AppData.uStructSize = sizeof(APPLICATIONDATA);AppData.hWnd = GetSafeHwnd(); // Window handle of an application, may not be NULLlstrcpy (AppData.szManufacturerName, TEXT("LEAD Technologies, Inc.")); // Application manufacturer namelstrcpy (AppData.szAppProductFamily, TEXT("LEAD Test Applications")); // Application product familylstrcpy (AppData.szVersionInfo, TEXT("Version 14.0")); // Application version infolstrcpy (AppData.szAppName, TEXT("TWAIN Utility Application")); // Application Name// initialize the twain session to use other lead twain functionsL_INT nRet = L_TwainInitSession (&m_hSession, &AppData);if (nRet != SUCCESS)return FALSE;
| 12. | To end the Twain session and free memory allocated by the Twain DLL, add the following code in the WM_DESTROY of the CTutorDlg. Do the following: | |
| a. | Double click the dialog IDD_TUTOR_DIALOG, and then go to View -> Properties Window, and then press Messages button. | |
| b. | Select WM_DESTROY, and then add OnDestroy from the list box. | |
if (m_hSession)L_TwainEndSession (&m_hSession);
| 13. | Add the following member variables for the following controls. To do so, go to Class View from Solution Explorer, select CtutorDlg, and then go to Project -> Add Variable menu, then do the following: | |
| a. | Check Control variable check box. | |
| b. | Select each of the following controls and add the corresponding member variable by pressing the Finish variable button. | |
|
ID |
Member variable |
Type |
Category |
|
IDC_USEBUFFERSIZE |
m_bUseBufferSize |
BOOL |
Value |
|
IDC_BUFFERSIZE |
m_nBufferSize |
int |
Value |
|
IDC_FILENAME |
m_csFileName |
CString |
Value |
14. |
Double click the dialog IDD_TUTOR_DIALOG, and then double click on Fast Acquire button to add OnBnClickedAcquire handler function |
|
Add the following code |
void CTutorDlg:: OnBnClickedAcquire (){UpdateData();L_INT nFormat;L_UINT uTransferMode;BOOL bMemory = IsDlgButtonChecked(IDC_MEMORY);if (bMemory){uTransferMode = LTWAIN_BUFFER_MODE;nFormat = FILE_CCITT_GROUP4;}else{uTransferMode = LTWAIN_NATIVE_MODE;nFormat = FILE_TIF;}L_INT nRet = L_TwainAcquireMulti (m_hSession,(L_TCHAR *)(LPCTSTR)m_csFileName,LTWAIN_SHOW_USER_INTERFACE | LTWAIN_USE_THREAD_MODE,uTransferMode,nFormat,1,TRUE,m_nBufferSize,!m_bUseBufferSize , NULL, NULL);if (nRet == 1)AfxMessageBox(TEXT("Fast Scanning process done successfully..."));else{CString csError;csError.Format(TEXT("AcquireMulti failed, Error = %d\n"), nRet);AfxMessageBox(csError);}}
15. |
Compile and run your program to test it. |
16. |
Enter a value (say 1000) for the buffer size and a file name (include full path) for the scanned image. |