Using the Fast TWAIN Feature (C++ 5.0 and later)
Take the following steps to start a project and to add some code that acquires the images 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 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): |
#import "c:\\winnt\\system32\\ltrvr14n.dll" no_namespace, named_guids
#import "c:\\winnt\\system32\\ltrtn14n.dll" no_namespace, named_guids
#import "c:\\winnt\system32\\ltrio14n.dll" no_namespace, named_guids
8. |
Add an ILEADRasterTwain 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. |
|
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 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 |
11. |
Add two Radio buttons in addition to the above buttons. |
|
|
ID |
Caption |
|
IDC_NATIVE |
Native Mode |
|
IDC_MEMORY |
Memory Mode |
12. |
Add the following button: |
|
|
ID |
Caption |
|
IDC_ACQUIRE |
Fast Acquire |
13. |
Add the following two text boxes and name them as follows: |
|
|
ID |
|
|
IDC_BUFFERSIZE |
|
|
IDC_FILENAME |
|
14. |
Add the following code to the end of OnInitDialog before the return statement: |
if (m_pRasterTwain == NULL)
{
CoCreateInstance(CLSID_LEADRasterTwain, NULL, CLSCTX_ALL, IID_ILEADRasterTwain, (void**)&m_pRasterTwain);
}
if (m_pRasterTwain == NULL)
return FALSE;
m_pRasterTwain->InitSession ((long)GetSafeHwnd());
m_pRasterTwain->put_EnableMethodErrors(TRUE);
CheckDlgButton(IDC_MEMORY, TRUE);
15. |
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();
m_pRaster->Release ();
}
16. |
Add the following member variables for the following controls. To do so, press Ctrl-W to go to the MFC Class Wizard; then do the following: |
|
|
a. |
Select Member variables tab |
|
b. |
In the Class name combo box, select CTutorDlg. |
|
c. |
Select the following control and add for each one the following member variable by press Add variable button for each control. |
|
ID |
Member variable |
Type |
|
IDC_USEBUFFERSIZE |
m_bUseBufferSize |
BOOL |
|
IDC_BUFFERSIZE |
m_nBufferSize |
int |
|
IDC_FILENAME |
m_csFileName |
CString |
|
d. |
Press Ok. |
17. |
Add code for the select source button (IDC_ACQUIRE). 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 IDC_ACQUIRE. |
|
d. |
In the Messages list box, select BN_CLICKED. |
|
e. |
Click the Add Function button. Choose OK for the default function name (OnAcquire). |
|
f. |
Click the Edit Code button to start entering the code. |
void CTutorDlg::OnAcquire()
{
UpdateData();
BOOL bMemory = IsDlgButtonChecked(IDC_MEMORY);
if (bMemory)
{
m_pRasterTwain->FastTransferMode = L_LTWAIN_BUFFER_MODE;
m_pRasterTwain->FastFormat = FILE_CCITT_GROUP4;
}
else
{
m_pRasterTwain->FastTransferMode = L_LTWAIN_NATIVE_MODE;
m_pRasterTwain->FastFormat = FILE_TIF;
}
m_pRasterTwain->FastBitsPerPixel = 1;
m_pRasterTwain->FastUsePreferredBufferSize = m_bUseBufferSize;
m_pRasterTwain->FastBufferSize = m_nBufferSize;
BSTR bstrFName = m_csFileName.AllocSysString();
short iRet = m_pRasterTwain->AcquireMulti(bstrFName, L_LTWAIN_SHOW_USER_INTERFACE | L_LTWAIN_USE_THREAD_MODE, TRUE);
SysFreeString(bstrFName);
if (iRet == 0)
AfxMessageBox(TEXT("Fast Scanning process done successfully..."));
else
{
CString csError;
csError.Format(TEXT("AcquireMulti failed, Error = %d\n"), iRet);
AfxMessageBox(csError);
}
}
18. |
Compile and run your program to test it. |