Set/Get a Twain Capability
Take the following steps to get or set a twain capability:
1. |
Start Microsoft Visual Studio 2005 |
2. |
Select the File->New menu option, click the "Project" menu. |
3. |
From "Project Types" select "Other Languages" to expand it, then select "Visual C++" to expand it, then select "MFC". From the right window select "MFC Application". |
4. |
In the Project Name dialog box, enter "TwainTutor3". |
5. |
In the Location dialog box, use the "Examples\ClassLibrary\MSVC" directory of your LEAD installation. For example, if you installed LEADTOOLS in "C:\Program Files\LEAD Technologies\LEADTOOLS 15\", enter "C:\Program Files\LEAD Technologies\LEADTOOLS 15\ Examples\ClassLibrary\MSVC", then Click OK. Then click "Next" |
6. |
Choose "Dialog based" and click "Finish". |
7. |
Click on the "Solution Explorer" tab, and then click on the "TwainTutor3" project to expand it. Click on the Header files, then Open "TwainTutor3.h". |
8. |
Add the following line immediately before the class CTwainTutor3App declaration, (keep in mind, you may have to change the path to where the header files reside): |
#include "..\..\..\..\include\ClassLib\ltwrappr.h"
9. |
Click on the "Class View" tab. |
10. |
Click to open the "TwainTutor3" classes branch. |
11. |
Click "CTwainTutor3App", and then double click the CTwainTutor3App(void) constructor. |
12. |
Add the following lines after //TODO: add construction code here: |
LBase::LoadLibraries(LT_ALL_LEADLIB);
LSettings::UnlockSupport(L_SUPPORT_DOCUMENT, L_KEY_DOCUMENT);
13. |
Create a new file called Imports.cpp in place it beside your project files. |
|
|
a. |
In the Project Workspace, click the Solution Explorer tab. |
|
b. |
Double-click the TwainTutor3 folder to open it. |
|
c. |
Right-click the Source files folder and select Add à New item. |
|
d. |
Expand Visual C++ tree, if it is not already expanded. |
|
e. |
Select Code from the sub tree. |
|
f. |
Select C++ File (.cpp) from the right window. |
|
g. |
In the name text box, specify Imports.cpp |
|
h. |
Click the Add button. |
|
i. |
Double-click the imports.cpp in the solution Explorer and add the following lines: |
#include "StdAfx.h"
#if defined(WIN64)
#else
#pragma comment(lib, "..\\..\\..\\..\\Lib\\API\\Win32\\Ltwvc_u.lib")
#endif // #if defined(WIN64)
14. |
Click on the "Solution Explorer" tab. |
15. |
Double-click the "TwainTutor3" folder to open it. |
16. |
Double-click the "Header Files" folder to open it. Then double click "TwainTutor3Dlg.h" file to open it. |
17. |
Add the following class declaration before CTwainTutor3Dlg class. |
class LMyTwain : public LTwain
{
LEAD_DECLAREOBJECT(LMyTwain);
public:
LMyTwain();
virtual ~LMyTwain();
virtual L_INT BitmapCallBack(pBITMAPHANDLE pBitmap);
};
18. |
Click on the "Solution Explorer" tab. |
19. |
Double-click the "TwainTutor3" folder to open it. |
20. |
Double-click the "Source Files" folder to open it. Then double click "TwainTutor3Dlg.cpp" file to open it. |
21. |
Add the following class: |
LEAD_IMPLEMENTOBJECT(LMyTwain);
LMyTwain::LMyTwain()
{
EnableCallBack(TRUE);
}
LMyTwain::~LMyTwain()
{
}
L_INT LMyTwain::BitmapCallBack(pBITMAPHANDLE pBitmap)
{
//Copy the acquired bitmap here
return SUCCESS;
}
22. |
Click on the "Class View" tab. |
23. |
Right click "CTwainTutor3Dlg" and select Add à "Add Variable..." |
24. |
For Variable Type enter LMyTwain, and for Variable Declaration put m_MyTwain. Leave Access as "Public" and click OK. |
25. |
Right click "CTwainTutor3Dlg" and select Add à "Add Variable..." |
26. |
For Variable Type enter TW_CAPABILITY, and for Variable Declaration put m_twCap. Leave Access as "Public" and click OK. |
27. |
Right click "CTwainTutor3Dlg" and select Add à "Add Variable..." |
28. |
For Variable Type enter L_UINT, and for Variable Declaration put m_uItemValue. Leave Access as "Public" and click OK. |
29. |
Click to open the CTwainTutor3Dlg branch. Double click the OnInitDialog() function and add the following code after line: |
|
// TODO: Add extra initialization here |
APPLICATIONDATA AppData;
memset(&AppData, 0, sizeof(APPLICATIONDATA));
AppData.hWnd = m_hWnd;
AppData.uStructSize = sizeof(AppData);
lstrcpy(AppData.szManufacturerName, _T("LEAD Technologies, Inc."));
lstrcpy(AppData.szAppProductFamily, _T("LEAD Test Applications"));
lstrcpy(AppData.szVersionInfo, _T("Version 1.0"));
lstrcpy(AppData.szAppName, _T("TWAIN Test Application"));
m_MyTwain.InitSession(&AppData);
30. |
Right click the CTwainTutor3Dlg branch, and choose "Properties". |
31. |
From the "Properties" window toolbar, click on the Messages icon. Then click on the empty area beside the item "WM_DESTROY" and choose OnDestroy. |
32. |
Add the following code after the opening bracket {: |
m_MyTwain.EndSession();
LBase::UnloadLibraries(LT_ALL_LEADLIB);
33. |
Click on the "Solution Explorer" tab. |
||
34. |
Double-click the "TwainTutor3" folder to open it. |
||
35. |
Double-click the "Resource Files" folder to open it. Then double click "TwainTutor3.rc" file to open it, then double click "Dialog", and then double click "IDD_TWAINTUTOR3_DIALOG" |
||
36. |
Now, drag and drop 5 buttons, and change their properties as follows: |
||
|
|
ID |
Caption |
|
Button1 |
IDC_SELECT_SOURCE |
Select Source |
|
Button2 |
IDC_ACQUIRE |
Acquire |
|
Button3 |
IDC_GET_CAPABILITY |
Get Capability |
|
Button4 |
IDC_SET_CAPABILITY |
Set Capability |
|
Button5 |
IDC_SET_BRIGHTNESS |
Set Brightness |
37. |
From View menu, select "Other Windows" menu, then select "Resource View" menu, then select Dialog, and select "IDD_TWAINTUTOR3_DIALOG" |
||
38. |
Double click on "Select Source" button, and add the following code: |
m_MyTwain.SelectSource(NULL);
39. |
From View menu, select "Other Windows" menu, then select "Resource View" menu, then select Dialog, and select "IDD_TWAINTUTOR3_DIALOG" |
40. |
Double click on "Acquire" button, and add the following code: |
BITMAPHANDLE Bitamp;
m_MyTwain.Acquire(&Bitamp, sizeof(BITMAPHANDLE), LTWAIN_SHOW_USER_INTERFACE, NULL);
41. |
From View menu, select "Other Windows" menu, then select "Resource View" menu, then select Dialog, and select "IDD_TWAINTUTOR3_DIALOG" |
42. |
Double click on "Get Capability" button, and add the following code: |
L_INT nItemType;
m_twCap.Cap = ICAP_XFERMECH;
m_twCap.ConType = TWON_DONTCARE16;
m_twCap.hContainer = NULL;
m_MyTwain.GetCapability(&m_twCap, LTWAIN_CAPABILITY_GETCURRENT);
m_MyTwain.GetNumericContainerItemType(&m_twCap, &nItemType);
if (nItemType == TWTY_UINT16)
m_MyTwain.GetNumericContainerUINTValue(&m_twCap, 0, &m_uItemValue);
else
AfxMessageBox(TEXT("Returned bad item type"));
43. |
From View menu, select "Other Windows" menu, then select "Resource View" menu, then select Dialog, and select "IDD_TWAINTUTOR3_DIALOG" |
44. |
Double click on "Set Capability" button, and add the following code: |
if (m_uItemValue != TWSX_NATIVE)
{
TW_CAPABILITY twSetCap;
twSetCap.Cap = ICAP_XFERMECH;
twSetCap.ConType = TWON_ONEVALUE;
m_MyTwain.CreateNumericContainerOneValue(&twSetCap, TWAINNUMERICTYPE_TW_UINT16, TWSX_NATIVE);
m_MyTwain.SetCapability(&twSetCap, LTWAIN_CAPABILITY_SET);
m_MyTwain.FreeContainer(&twSetCap);
}
else
AfxMessageBox(TEXT("The Transfer mode is Native"));
45. |
From View menu, select "Other Windows" menu, then select "Resource View" menu, then select Dialog, and select "IDD_TWAINTUTOR3_DIALOG" |
46. |
Double click on "Set Brightness" button, and add the following code: |
TW_CAPABILITY twBrightnessCap;
TW_FIX32 twFix32;
pTW_ONEVALUE ptwOneVal;
twBrightnessCap.Cap = ICAP_BRIGHTNESS;
twBrightnessCap.ConType = TWON_ONEVALUE;
L_INT nRet = m_MyTwain.GetCapability(&twBrightnessCap, LTWAIN_CAPABILITY_GETCURRENT);
if (nRet == SUCCESS)
{
ptwOneVal = (pTW_ONEVALUE)GlobalLock(m_twCap.hContainer);
memcpy(&twFix32, (void *)&ptwOneVal->Item, sizeof(TW_FIX32));
GlobalUnlock(twBrightnessCap.hContainer);
GlobalFree(twBrightnessCap.hContainer);
twBrightnessCap.hContainer = NULL;
if (twFix32.Whole != 128)
{
twFix32.Whole = 128;
twFix32.Frac = 0;
}
twBrightnessCap.Cap = ICAP_BRIGHTNESS;
twBrightnessCap.ConType = TWON_ONEVALUE;
twBrightnessCap.hContainer = GlobalAlloc(GHND, sizeof(TW_ONEVALUE) + sizeof(TW_FIX32));
ptwOneVal = (pTW_ONEVALUE)GlobalLock(m_twCap.hContainer);
ptwOneVal->ItemType = TWTY_FIX32;
memcpy((void *)&ptwOneVal->Item, &twFix32, sizeof(TW_FIX32));
GlobalUnlock(twBrightnessCap.hContainer);
m_MyTwain.SetCapability(&twBrightnessCap, LTWAIN_CAPABILITY_SET);
}
47. |
Compile and test the program. |