按照以下步骤创建并运行实现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);
编译和测试程序。