Available in the LEADTOOLS Imaging toolkit. |
Get a Fast Twain Scan from a Scanner (Visual C++ 5.0)
Take the following steps to start a project and to add some code to find the fastest configuration for your scanner using the LEADTOOLS Fast TWAIN feature:
1. |
Start a new project as follows: |
|
|
Run Microsoft Visual C++ 5.0, select the File >New menu option, and do the following: |
|
|
a. |
Click the Projects tab. |
|
b. |
Select MFC AppWizard (exe) 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. |
2. |
In the Step 1 dialog box, do the following: |
|
|
a. |
Select Dialog based. |
|
b. |
Click the Next button. |
3. |
In the Step 2 of 4 dialog box, do the following: |
|
|
a. |
Ensure that About Box is selected. |
|
b. |
Ensure that 3D Controls is selected. |
|
c. |
Select ActiveX Controls. |
|
d. |
Click the Next button. |
4. |
In the Step 3 of 4 dialog box, do the following: |
|
|
a. |
For comments, ensure that Yes, Please is selected. |
|
b. |
For how to use the MFC library, select Use MFC in a Shared DLL. |
|
c. |
Click the Next button. |
5. |
In the Step 4 of 4 dialog box, just click Finish. |
|
6. |
Read the New Project Information, and click OK. (The AppWizard creates the project files and opens the project.) |
|
7. |
Add #import and #include statements to your program so you can access the LEAD COM constants and classes: |
|
|
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): If you used the defaults, it should be "C:\Program Files\LEAD Technologies\LEADTOOLS Imaging 16\Bin\CDLL\Win32. |
#include "l_ocx.h"
#import "LtocxVariantu.dll" no_namespace, named_guids
#import "LtocxTwainu.dll" no_namespace, named_guids
8. |
Add an ILEADRasterTwain_U pointer to the class and set it to NULL in the constructor. |
|
|
a. |
In the Project Workspace, click the Class View tab. |
|
b. |
Select the CTutorDlg class. |
|
c. |
Right-click and choose "Add Member Variable". |
|
d. |
For Variable Type enter ILEADRasterTwain_U. |
|
e. |
For Variable Declaration enter *m_pRasterTwain. |
|
f. |
Leave Access as Public. |
|
g. |
Click the OK button. |
|
h. |
In the Class View tab, double-click the CTutorDlg constructor function. |
|
i. |
Add the following line to the end of the constructor: |
m_pRasterTwain = NULL;
9. |
Go to the Project WorkSpace and click the Resource View tab. Double-click Dialog and double-click IDD_TUTOR_DIALOG to bring up the application's dialog box. |
|
10. |
Add 3 buttons. To do this, select the button control on the Controls toolbar. Then, click and drag to position the button on the dialog box. Then double-click the button to change its properties. Set the properties as follows: |
|
|
ID |
Caption |
|
ID_SELECT_SOURCE |
Select Source |
|
ID_FIND_FAST_CONFIG |
Find Fast Config |
|
ID_ACQUIRE_FAST_CONFIG |
Acquire Fast Config |
11. |
Add the following code to the end of OnInitDialog before the return statement: |
CoInitialize(NULL);
HRESULT hr = CoCreateInstance (CLSID_LEADRasterTwain_U,
NULL, CLSCTX_ALL, IID_ILEADRasterTwain_U, (void **)&m_pRasterTwain);
if (SUCCEEDED(hr))
{
m_pRasterTwain->put_ManName
(CString("LEAD Technologies, Inc.").AllocSysString());
m_pRasterTwain->put_ProdFamily
(CString("LEAD Twain COM Object").AllocSysString());
m_pRasterTwain->put_Version
(CString("Version 16").AllocSysString());
m_pRasterTwain->put_AppName
(CString("LEADTools Twain test sample").AllocSysString());
short
iRet = m_pRasterTwain->InitSession ((long)m_hWnd);
if(iRet
!= 0)
AfxMessageBox(TEXT("Error
Initializing Twain"));
m_pRasterTwain->EnableMethodErrors
= FALSE;
/*
Unlock Document support.
Note
that this is a sample key, which will not work in your toolkit. */
m_pRasterTwain->UnlockSupport
(L_SUPPORT_DOCUMENT, "test key");
}
12. |
To end the Twain session and free memory allocated by the COM object, add the following code in the destructor of the CTutorDlg. To do so, press Ctrl-W to go to the MFC Class Wizard; then do the following: |
|
|
a. |
In the Class name combo box, select CTutorDlg. |
|
b. |
In the Object IDs list box, select CTutorDlg. |
|
c. |
In the Messages list box, select WM_DESTROY. |
|
d. |
Click the Add Function button. Choose OK for the default function name (OnDestroy). |
|
e. |
Click the Edit Code button to enter the following code before CDialog::OnDestroy(). |
if(m_pRasterTwain)
{
m_pRasterTwain->EndSession
();
}
CoUninitialize();
13. |
Add code for the select source button (ID_SELECT_SOURCE). To do so, press Ctrl-W to go to the MFC Class Wizard; then do the following: |
|
|
a. |
Click the Message Maps tab. |
|
b. |
In the Class Name combo box, select CTutorDlg. |
|
c. |
In the Object IDs list box, select ID_SELECT_SOURCE. |
|
d. |
In the Messages list box, select BN_CLICKED. |
|
e. |
Click the Add Function button. Choose OK for the default function name (OnSelectSource). |
|
f. |
Click the Edit Code button to start entering the code. |
void CTutorDlg::OnSelectSource()
{
if(m_pRasterTwain)
m_pRasterTwain->SelectSource
();
}
14. |
Add code for the select source button (ID_FIND_FAST_CONFIG). To do so, press Ctrl-W to go to the MFC Class Wizard; then do the following: |
|
|
a. |
Click the Message Maps tab. |
|
b. |
In the Class Name combo box, select CTutorDlg. |
|
c. |
In the Object IDs list box, select ID_FIND_FAST_CONFIG. |
|
d. |
In the Messages list box, select BN_CLICKED. |
|
e. |
Click the Add Function button. Choose OK for the default function name (OnFindFastConfig). |
|
f. |
Click the Edit Code button to start entering the code. |
void CTutorDlg::OnFindFastConfig()
{
m_pRasterTwain->UserFastConfigsCount = 0;
m_pRasterTwain->EnableFastConfigEvent = FALSE;
short iRet = m_pRasterTwain->FindFastConfig ("c:\\temp",
L_LTWAIN_SHOW_USER_INTERFACE | L_LTWAIN_USE_THREAD_MODE, 8, 5);
if (iRet == 0)
MessageBox(TEXT("The Find Fast Configuration
process completed."), TEXT("Fast Config"), MB_OK);
else
MessageBox(TEXT("An error occurred
during the Finding Fast Configuration process."), TEXT("Fast
Config"), MB_OK);
}
15. |
Add code for the select source button (ID_ACQUIRE_FAST_CONFIG). To do so, press Ctrl-W to go to the MFC Class Wizard; then do the following: |
|
|
a. |
Click the Message Maps tab. |
|
b. |
In the Class Name combo box, select CTutorDlg. |
|
c. |
In the Object IDs list box, select ID_ACQUIRE_FAST_CONFIG. |
|
d. |
In the Messages list box, select BN_CLICKED. |
|
e. |
Click the Add Function button. Choose OK for the default function name (OnAcquireFastConfig). |
|
f. |
Click the Edit Code button to start entering the code. |
void CTutorDlg::OnAcquireFastConfig()
{
m_pRasterTwain->FastTransferMode = m_pRasterTwain->GetBestFastConfig()->TransferMode;
m_pRasterTwain->FastFormat = m_pRasterTwain->GetBestFastConfig()->FileFormat;
m_pRasterTwain->FastBitsPerPixel = m_pRasterTwain->GetBestFastConfig()->BitsPerPixel;
m_pRasterTwain->FastBufferSize = m_pRasterTwain->GetBestFastConfig()->BufferSize;
m_pRasterTwain->FastUsePreferredBufferSize
= TRUE;
m_pRasterTwain->EnableAcquireMultiEvent = FALSE;
short iRet = m_pRasterTwain->AcquireMulti ("c:\\temp\\test", L_LTWAIN_SHOW_USER_INTERFACE, TRUE);
if (iRet == 0)
MessageBox(TEXT("Image acquisition
using the Fast TWAIN Configuration is completed."), TEXT("Fast
Config"), MB_OK);
else
MessageBox(TEXT("An error occurred
while acquiring an image using the Fast TWAIN Configuration."), TEXT("Fast
Config"), MB_OK);
}
16. |
Compile and test the program. |