TWain 在 Qt4 中的调用方法
1、开发环境
Windows7_sp1_x64 Qt4.7.4 + mingw32 twain_32.dll (1.7.1.3)
2、常用缩写
DSM: Data Source Manager 数据源管理器
DS: Data Source 数据源
DSM_Entry: DSM调用入口
TW_UINT16 FAR PASCAL DSM_Entry(
pTW_IDENTITY pOrigin, // Source of message
pTW_IDENTITY pDest, // Destination of message
TW_UINT32 DG, // Data group ID: DG_xxxx; DG_CONTROL,DG_IMAGE,DG_AUDIO
TW_UINT16 DAT, // Data argument type: DAT_xxxx; DAT_IDENTITY ...
TW_UINT16 MSG, // Message ID: MSG_xxxx; MSG_GET,MSG_SET ...
TW_MEMREF pData // Pointer to data
);
3、调用实现
3.0 加载 TWAIN_32.DLL,并获取 DSM_Entry
HINSTANCE m_hTwainDLL = LoadLibrary(L"TWAIN_32.DLL"); DSMENTRYPROC m_pDSMProc = (DSMENTRYPROC)GetProcAddress(m_hTwainDLL, "DSM_Entry");
3.1 打开 DSM
MSG_PROCESSEVENT
HWND hWnd = this->WinId();
TW_IDENTITY m_AppId;
BOOL m_bDSMOpen = DSM_Entry(&m_AppId,NULL,DG_CONTROL,DAT_PARENT,MSG_OPENDSM,(TW_MEMREF)&hWnd);
3.2 选择 DS
TW_IDENTITY m_Source;
BOOL m_bDSSelect = DSM_Entry(&m_AppId,NULL,DG_CONTROL,DAT_IDENTITY,MSG_USERSELECT,&m_Source);
BOOL m_bDSSelect = DSM_Entry(&m_AppId,NULL,DG_CONTROL,DAT_IDENTITY,MSG_GETDEFAULT,&m_Source);
3.3 打开 DS
BOOL m_bDSOpen = DSM_Entry(&m_AppId,NULL,DG_CONTROL,DAT_IDENTITY,MSG_OPENDS,(TW_MEMREF)&m_Source);
3.4 设置参数
MSG_SET
3.5 显示扫描界面
MSG_ENABLEDS
3.6 获取图像
MSG_XFERREADY
DAT_SETUPFILEXFER
DAT_IMAGEFILEXFER
3.7 关闭扫描界面
MSG_CLOSEDSREQ
MSG_CLOSEDSOK
MSG_DISABLEDS
3.8 关闭 DS
MSG_CLOSEDS
3.9 关闭 DSM
MSG_CLOSEDSM
TWain 在 Qt4 中的调用方法的更多相关文章
- iOS中--NSArray调用方法详解 (李洪强)
下面的例子以 NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"to ...
- Java中对象调用方法的顺序
Java虚拟机会预先为加载到内存中的每个类维护一个方法表(Method Table),其中列出了所有类中所有方法的签名. 现在有2个类A和B,其中,B是A的子类,和一个B类型的对象x,当调用x.f(a ...
- [安卓][转]internal(com.android.internal)和hidden(@hide)APIs简介及在应用程序中的调用方法
转自:http://www.cnblogs.com/xirihanlin/archive/2011/06/05/2073118.html [引言]:我在做android softap的时候看到andr ...
- java加载外部文件数据到代码中:外部数据文件放到jar包中,调用方法getResourceAsStream
任务要将数据文件geo.txt加载进行.因为是别人写的总体项目,不能乱动位置.只能将geo.txt打包到jar中某目录.比如,放到.class文件下怎么加载:http://riddickbryant. ...
- HTML中JavaScript调用方法
我在写web页面的时候,经常用js实现某些功能,我用的方法有两种: 1.点击调用JavaScript: <button onclick="loadXMLDoc()">b ...
- ABP在领域事件中异步调用方法抛异常
在领域事件中调用UserRegistrationManager.RegisterAsync抛异常 Call UserRegistrationManager.RegisterAsync() throw ...
- C#中dll调用方法
我不创造方法,只做方法的搬运工. https://www.cnblogs.com/Asuphy/p/4206623.html
- C#获取当前堆栈的各调用方法列表
在使用.NET编写的代码在debug时很容易进行排查和定位问题,一旦项目上线并出现问题的话那么只能依靠系统日志来进行问题排查和定位,但当项目复杂时,即各种方法间相互调用将导致要获取具体的出错方法或调用 ...
- MVC中部分视图调用方法总结
部分视图不走 controller @Html.Partial(“_Menu”); //这种是不走Controller的,直接在加载_Menu的视图 @Html.Partial(“_Menu”, ...
随机推荐
- How many ways??---hdu2157(矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2157 题意:有一个有向图,含有n个节点,m条边,Q个询问,每个询问有 s,t,p,求 s 到 t ...
- 小米范工具系列之四:小米范HTTP批量发包器
最新版本1.3,下载地址:http://pan.baidu.com/s/1c1NDSVe 文件名httpsender . 此工具使用java 1.8以上版本运行. 小米范HTTP批量发包器的主要功能 ...
- SSL默认端口时,用http://ip:port/访问出错(转)
add by zhj: 其实就是保证https访问的port与服务器监听的port是同一port 原文:http://blog.csdn.net/ikmb/article/details/386370 ...
- appfog 使用
1.需要安装ruby 和 devkit The RubyInstaller Development Kit (DevKit) is a MSYS/MinGW based toolkit than en ...
- 6.安装pyhook报错is not a supported wheel on this platform
解决方法: 先找到合适的格式: 然后,选择合适的版本: 安装即可成功:
- Exhibitor(zookeeper监控工具)
具体看github上的文档,很详细https://github.com/soabase/exhibitor/wiki/Running-Exhibitor 一. 这个是Netflix出品的一个监控工具, ...
- rewrite or internal redirection cycle while processing "/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/jenkins/
折腾了很久,跟nginx配置没有关系.最终是把php版本从7.1降到5.6才解决的,是跟tp3.2匹配的
- mydumper安装
安装依赖包: yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake 下载二进制包: wget ht ...
- Java基础知识陷阱(九)
本文发表于本人博客. 今天我来说说关于JAVA多线程知识,有错误请指出.大家都知道JAVA在服务端上处理也有很大优势,很多公司也有在服务器跑JAVA进程,这说明JAVA在处理这个多线程以及并发下也有一 ...
- Good Bye 2018 Solution
A. New Year and the Christmas Ornament 签到. #include <bits/stdc++.h> using namespace std; int a ...