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\\CDLL\\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 here
return 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.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);
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);
else
AfxMessageBox(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);
}
else
AfxMessageBox(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.