从TWAIN源- Windows C DLL获取映像

本教程展示如何使用LEADTOOLS SDK从Windows C DLL应用程序中的TWAIN源获取映像。

概述
总结 本教程介绍如何从Windows C DLL应用程序中的TWAIN源获取映像。
完成时间 30分钟
Visual Studio项目 下载教程项目(19kb)
平台 Windows C DLL应用程序
IDE Visual Studio 2017, 2019
开发许可 下载LEADTOOLS
用另一种语言试试

所需的知识

章节,熟悉创建项目和加载/显示图像的基本步骤添加引用和设置License而且加载、显示和保存图像教程,在工作之前从TWAIN源- Windows C DLL获取映像教程。

创建项目并添加LEADTOOLS引用

中创建的项目的副本开始加载、显示和保存图像教程。如果项目不可用,请按照该教程中的步骤创建它。

要使用LEADTOOLS实现TWAIN扫描,需要添加所需的头文件和库文件。打开预编译的头文件(或pch.hstdafx.h,取决于所使用的Visual Studio版本),并添加以下行:

# include“C: \ LEADTOOLS22 \ \ Lttwn.h包括”#pragma comment (lib,“C: \ \ LEADTOOLS22 \ \ Lib \ \ CDLL \ \ x64 \ \ Lttwn_x.lib”// TWAIN支持

请注意

有关应用程序所需的dll的完整列表,请参阅包含在应用程序中的文件- C API

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具箱功能之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License

有两种类型的运行时许可证:

请注意

中更详细地介绍了添加LEADTOOLS引用和设置许可添加引用和设置License教程。

添加TWAIN会话启动和关闭代码

随着项目的创建、引用的添加、许可证的设置和加载图像代码的添加,编码就可以开始了。

使用解决方案资源管理器,导航到项目的主CPP文件,并在BITMAPHANDLE最上面的声明:

HTWAINSESSION twainSession = NULL;

中添加一个新案例开关(消息)声明指向()函数命名WM_CREATE。将下面的代码添加到新案例中来初始化TWAIN会话:

情况下WM_CREATE:如果(! L_IsTwainAvailable (hWnd)){对话框(hWnd,文本("无法初始化Twain功能。\nTwain不可用”),文本(“马克·吐温教程”), MB_ICONERROR);}其他的{appData = {运算符(应用数据),hWnd, TEXT(“我的公司”),文本(“我的产品”),文本(“1.0”),文本(“我的应用”), twlg_english_usa, twcy_usa};L_TwainInitSession (&twainSession appdata);}打破;

修改处理的案例WM_DESTROY,在指向()函数,在程序结束时终止TWAIN会话。

情况下WM_DESTROY:如果(twainSession){L_TwainEndSession (&twainSession);twainSession = NULL;}//保持case中其余代码不变

添加源选择和图像扫描代码

解决方案资源管理器双击资源文件(.rc)打开资源视图。然后双击资源树中的菜单。

添加一个新的吐温菜单旁边的下拉菜单文件菜单。将下表中的两个菜单项添加到新增的菜单项中吐温菜单。

菜单项文本 项ID
选择源 ID_TWAIN_SELECTSOURCE
与获得 ID_TWAIN_ACQUIRE
显示带有新菜单项的窗口的截图。

导航回指向函数,和下开关(wmId)语句的下面WM_COMMANDCase,添加下面两个新的Case。

开关(wmId){情况下ID_TWAIN_SELECTSOURCE:L_TwainSelectSource (twainSession, NULL);打破;情况下ID_TWAIN_ACQUIRE:如果(TwainScan(hWnd) == SUCCESS)InvalidateRect(hWnd, NULL, TRUE);其他的对话框(hWnd,文本(没有从吐温源头扫描。要么用户取消了,要么发生了错误。”),文本(“马克·吐温教程”), MB_ICONERROR);打破;//保留其余的代码

添加一个新的TwainScan函数,它可以放在指向函数,并添加下面的代码。

L_INT TwainScan(HWND){BITMAPHANDLE bmp = {0};L_INT nRet = L_TwainAcquire(twainSession, &bmp,运算符(bmp), NULL, LTWAIN_SHOW_USER_INTERFACE, NULL, NULL);如果(nRet != SUCCESS)返回nRet;如果(LEADBmp.Flags.Allocated)L_FreeBitmap (&LEADBmp);L_CopyBitmapHandle (&LEADBmp, bmp,运算符BITMAPHANDLE);//数据现在属于全局位图返回成功;}

添加TWAIN能力选项

打开资源视图双击资源树中的菜单。

添加一个新的选项菜单旁边的下拉菜单吐温菜单。将下表中的三个菜单项添加到新增的菜单项中选项菜单。

菜单项文本 项ID
本机 ID_OPTIONS_NATIVE
与记忆 ID_OPTIONS_MEMORY
文件 ID_OPTIONS_FILE

指向函数,和下开关(wmId)语句的下面WM_COMMANDCase,为新菜单项添加下面的新用例。

开关(wmId){情况下ID_OPTIONS_NATIVE:SetTransferMech (hWnd, TWSX_NATIVE);打破;情况下ID_OPTIONS_MEMORY:SetTransferMech (hWnd, TWSX_MEMORY);打破;情况下ID_OPTIONS_FILE:SetTransferMech (hWnd, TWSX_FILE);打破;//保留其余的代码

添加一个新的SetTransferMode功能,放在上面指向函数。属性的值来设置TWAIN能力图像传输机制能力。

无效SetTransferMech(HWND HWND, L_UINT transferMech){//命令Twain源更改传输模式TW_CAPABILITY twSetCap;twSetCap。Cap = ICAP_XFERMECH;twSetCap。ConType = TWON_ONEVALUE;L_TwainStartCapsNeg (twainSession);L_TwainCreateNumericContainerOneValue(&twSetCap, TWAINNUMERICTYPE_TW_UINT16, transferMech);ltwainsetcapability (twainSession, &twSetCap, ltwain_capacity_set);L_TwainFreeContainer (&twSetCap);L_TwainEndCapsNeg (twainSession);CheckOptionsMenu (hWnd);}

添加一个新的CheckOptionsMenu函数在SetTransferMode函数。方法的值,此新函数显示如何检索图像传输机制TWAIN功能,并在相应的菜单项旁边添加一个复选标记。

无效CheckOptionsMenu (HWND HWND){//询问Twain来源当前传输模式TW_CAPABILITY twGetCap = {0};twGetCap。Cap = ICAP_XFERMECH;twGetCap。ConType = TWON_ONEVALUE;L_TwainStartCapsNeg (twainSession);L_TwainGetCapability(twainSession, &twGetCap, ltwain_capacity_getcurrent);L_UINT transferMech = -1;L_TwainGetNumericContainerUINTValue(&twGetCap, 0, &transferMech);L_TwainEndCapsNeg (twainSession);UINT项目= 0;开关(transferMech){情况下TWSX_NATIVE:item = ID_OPTIONS_NATIVE;打破;情况下TWSX_MEMORY:item = ID_OPTIONS_MEMORY;打破;情况下TWSX_FILE:item = ID_OPTIONS_FILE;}HMENU菜单= GetMenu(hWnd);CheckMenuItem(菜单,ID_OPTIONS_NATIVE, MF_UNCHECKED);CheckMenuItem(菜单,ID_OPTIONS_MEMORY, MF_UNCHECKED);CheckMenuItem(菜单,ID_OPTIONS_FILE, MF_UNCHECKED);CheckMenuItem(菜单,项目,MF_CHECKED);}

运行项目

按下运行项目F5,或选择Debug ->开始调试

如果正确地执行了这些步骤,应用程序将运行。测试时,请遵循以下说明:

  1. 点击吐温->选择源并选择TWAIN设备。
  2. 点击吐温->收购让应用程序扫描页面。
  3. 扫描的页面应该显示在图像查看器

请注意

确保扫描仪所需的TWAIN驱动程序安装在机器上,机器通常与扫描设备一起安装。

总结

本教程展示了如何列出可用的TWAIN设备,并从这些设备获取扫描图像。它还涵盖了如何使用TwainSession而且TwainCapability类。

另请参阅

iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2023领德科技有限公司版权所有。