按照以下步骤创建并运行实现LEADTOOLS TWAIN特性的程序。请记住,TWAIN教程的目的是为您提供一种快速而简单的方法来生成TWAIN程序。
TwainDuplex
.单击解决方案资源管理器选项卡,然后单击TwainDuplex项目来扩展它。单击头文件,然后开放TwainDuplex.h。8.在类之前添加下面的行CTwainDuplexApp
声明(请记住,您可能必须更改头文件所在的路径):
# include"..\..\..\..\ 包括\ ClassLib \ ltwrappr.h”
单击类视图选项卡。
CTwainDuplexApp(空白)
构造函数。在后面添加以下行//TODO:在这里添加构造代码
:
LBase: LoadLibraries (LT_ALL_LEADLIB);
L_TCHAR * pszLicenseFile = L"将此替换为LEADTOOLS许可文件的路径";
L_TCHAR * pszDeveloperKey = L"将此替换为开发人员密钥";
LSettings:: SetLicenseFile (pszLicenseFile pszDeveloperKey);
创建一个名为Imports.cpp把它放在你的项目文件旁边。
# include“StdAfx.h”
#如果定义(WIN64)
#其他的
# pragma评论(自由,"..\\..\\..\\..\\ Lib \ \ CDLLVC10 \ \ Win32 \ \ Ltwvc_u.lib”)
# endif// #如果已定义(WIN64)
单击解决方案资源管理器选项卡。
类之前添加以下类声明CTwainDuplexDlg
类。
类LMyTwain:公共LTwain
{
LEAD_DECLAREOBJECT (LMyTwain);
公共:
LMyTwain ();
虚拟~ LMyTwain ();
虚拟L_INT BitmapCallBack(pBITMAPHANDLE pBitmap);
};
单击解决方案资源管理器选项卡。
添加如下类:
LEAD_IMPLEMENTOBJECT (LMyTwain);
LMyTwain: LMyTwain ()
{
EnableCallBack(真正的);
}
LMyTwain:: ~ LMyTwain ()
{
}
L_INT LMyTwain::BitmapCallBack(pBITMAPHANDLE pBitmap)
{
//复制获取的位图
返回成功;
}
单击类视图选项卡
LMyTwain
,以及变量声明把m_MyTwain
.离开访问作为公共并点击好吧.OnInitDialog ()
函数并在该行后添加以下代码:// TODO:添加额外的初始化
APPLICATIONDATA AppData;
memset (appdata 0运算符(APPLICATIONDATA));
AppData。hWnd = m_hWnd;
AppData。uStructSize =运算符(AppData);
lstrcpy (AppData。szManufacturerName _T (领德科技有限公司));
lstrcpy (AppData。szAppProductFamily _T (“铅测试应用”));
lstrcpy (AppData。szVersionInfo _T (“1.0版本”));
lstrcpy (AppData。szAppName _T (“TWAIN测试申请”));
m_MyTwain.InitSession (appdata);
OnDestroy
.在开始括号后添加以下代码{
:
m_MyTwain.EndSession ();
LBase: UnloadLibraries (LT_ALL_LEADLIB);
单击解决方案资源管理器选项卡。
TwainDuplex.rc
文件打开它,然后双击对话框,然后双击IDD_TWAINDUPLEX_DIALOG
.现在拖放2个按钮和3个单选按钮,并更改它们的属性如下:
控制类型 | ID | 标题 |
---|---|---|
Button1 | IDC_ACQUIRE | 收购 |
从“视图”菜单中选择其他窗口菜单,然后选择资源视图菜单,然后选择对话框,并选择IDD_TWAINTUTOR3_DIALOG.
双击收购按钮,并添加以下代码:
BITMAPHANDLE位图;
L_INT nRet;
TW_CAPABILITY twCap;
m_MyTwain.SelectSource(空);
twCap。Cap = CAP_DUPLEX;
twCap。ConType = TWON_ONEVALUE;
twCap。hContainer = NULL;
nRet = m_MyTwain。GetCapability (&twCap LTWAIN_CAPABILITY_GETVALUES);
如果(nRet == TWAIN_SUCCESS)
{
//检查所选驱动程序是否支持双工功能
pTW_ONEVALUE pOneValue = (pTW_ONEVALUE)GlobalLock(twCap.hContainer);
如果(pOneValue->ItemType != TWTY_UINT16)
{
GlobalUnlock (twCap.hContainer);
m_MyTwain.FreeContainer (&twCap);
返回;
}
TW_UINT16 item = (TW_UINT16)pOneValue-> item;
开关(项)
{
情况下TWDX_NONE:
AfxMessageBox(文本("所选驱动程序不支持双工功能"));
打破;
情况下TWDX_1PASSDUPLEX:
AfxMessageBox(文本(所选驱动支持1 Pass Duplex功能));
打破;
情况下TWDX_2PASSDUPLEX:
AfxMessageBox(文本(所选驱动中支持Pass Duplex能力));
打破;
}
GlobalUnlock (twCap.hContainer);
m_MyTwain.FreeContainer (&twCap);
//确保启用双工功能
如果(item != TWDX_NONE)
{
BOOL bEnable = TRUE;
twCap。Cap = CAP_DUPLEXENABLED;
twCap。ConType = TWON_ONEVALUE;
twCap。hContainer = GlobalAlloc(GHND,运算符(TW_ONEVALUE));
pTW_ONEVALUE pOneValue = (pTW_ONEVALUE)GlobalLock(twCap.hContainer);
pOneValue->ItemType = TWTY_BOOL;
pOneValue->Item = (TW_UINT32)bEnable;
GlobalUnlock (twCap.hContainer);
nRet = m_MyTwain。SetCapability (&twCap LTWAIN_CAPABILITY_SET);
如果(nRet == TWAIN_SUCCESS)
AfxMessageBox(文本("双工能力已启用"));
其他的
AfxMessageBox(文本(“无法启用双工功能”));
}
}
其他的
AfxMessageBox(文本("所选驱动程序不支持双工功能"));
//尝试使用双工功能获取页面
m_MyTwain。收购(&Bitmap,运算符bb0 ltwain_modal_user_interface, null);
编译和测试程序。