Take the following steps to get or set a twain capability:
TwainTutor3.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" Click the Class View tab.
CTwainTutor3App(void) constructor.Add the following lines after //TODO: add construction code here:
LBase::LoadLibraries(LT_ALL_LEADLIB);L_TCHAR * pszLicenseFile = L"Replace this with the path to the LEADTOOLS license file";L_TCHAR * pszDeveloperKey = L"Replace this with your developer key";LSettings::SetLicenseFile(pszLicenseFile, pszDeveloperKey);
Create a new file called Imports.cpp and place it beside your project files.
#include "StdAfx.h"#if defined(WIN64)#else#pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLLVC10\\Win32\\Ltwvc_u.lib")#endif // #if defined(WIN64)
Click the Solution Explorer tab.
Add the following class declaration before the CTwainTutor3Dlg class.
class LMyTwain : public LTwain{LEAD_DECLAREOBJECT(LMyTwain);public:LMyTwain();virtual ~LMyTwain();virtual L_INT BitmapCallBack(pBITMAPHANDLE pBitmap);};
Click the Solution Explorer tab.
Add the following class:
LEAD_IMPLEMENTOBJECT(LMyTwain);LMyTwain::LMyTwain(){EnableCallBack(TRUE);}LMyTwain::~LMyTwain(){}L_INT LMyTwain::BitmapCallBack(pBITMAPHANDLE pBitmap){//Copy the acquired bitmap herereturn SUCCESS;}
Click the Class View tab.
LMyTwain, and for Variable Declaration put m_MyTwain. Leave Access as Public and click OK.TW_CAPABILITY, and for Variable Declaration put m_twCap. Leave Access as Public and click OK.L_UINT, and for Variable Declaration put m_uItemValue. Leave Access as Public and click OK.Click to open the CTwainTutor3Dlg branch. Double-click the OnInitDialog() function and add the following code after the 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);
Right-click the CTwainTutor3Dlg branch, and choose Properties.
WM_DESTROY and choose OnDestroy.Add the following code after the opening bracket {:
m_MyTwain.EndSession();LBase::UnloadLibraries(LT_ALL_LEADLIB);
Click the Solution Explorer tab.
IDD_TWAINTUTOR3_DIALOG.Now drag and drop 5 buttons, and change their properties as follows:
| Control Type | ID | Caption |
|---|---|---|
| Button1 | IDC_SELECT_SRC | Select Source |
| Button2 | IDC_ACQUIRE | Acquire |
| Button3 | IDC_GET_CAPABILITY | Get Capability |
| Button4 | IDC_SET_CAPABILITY | Set Capability |
| Button5 | IDC_SET_BRIGHTNESS | Set Brightness |
From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR3_DIALOG.
Double-click the Select Source button, and add the following code:
m_MyTwain.SelectSource(NULL); From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR3_DIALOG
Double-click the Acquire button, and add the following code:
BITMAPHANDLE Bitamp;m_MyTwain.Acquire(&Bitamp, sizeof(BITMAPHANDLE), LTWAIN_SHOW_USER_INTERFACE, NULL);
From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR3_DIALOG.
Double-click the 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);elseAfxMessageBox(TEXT("Returned bad item type"));
From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR3_DIALOG.
Double-click the 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);}elseAfxMessageBox(TEXT("The Transfer mode is Native"));
From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR3_DIALOG.
Double-click the 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);}
Compile and test the program.