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 NULL
lstrcpy (AppData.szManufacturerName, TEXT("LEAD Technologies, Inc.")); // Application manufacturer name
lstrcpy (AppData.szAppProductFamily, TEXT("LEAD Test Applications")); // Application product family
lstrcpy (AppData.szVersionInfo, TEXT("Version 14.0")); // Application version info
lstrcpy (AppData.szAppName, TEXT("TWAIN Utility Application")); // Application Name
// initialize the twain session to use other lead twain functions
L_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. |