我在HP Scanjet 200 TWAIN协议1.9的应用程序中使用twain 2.3(TWAINDSM.DLL)。
我的TWAIIN电话是:
OpenDSM: DG_CONTROL, DAT_PARENT, MSG_OPENDSM
OpenDS: DG_CONTROL, DAT_IDENTITY, MSG_OPENDS
EnableDS: DG_CONTROL, DAT_USERINTERFACE, MSG_ENABLEDS
ProcessDeviceEvent: DG_CONTROL, DAT_EVENT, MSG_PROCESSEVENT
由于上次通话,我总是得到TWRC_NOTDSEVENT
而不是TWRC_DSEVENT
。
可以请别人帮忙吗?
答案 0 :(得分:0)
使用DG_CONTROL / DAT_EVENT / MSG_PROCESSEVENT
后,必须将来自应用程序消息循环的所有消息发送到数据源进行处理。接收TWRC_NOTDSEVENT
表示转发的消息不适用于源,因此应用程序应该正常处理它。
继续将所有消息转发到源,直到您收到MSG_XFERREADY
,这意味着有数据要传输。传输完成后,您已发送MSG_DISABLEDS
,此时您可以停止将消息转发到源。
答案 1 :(得分:0)
吐温是一个标准,当许多公司实施该标准时,并非所有公司都采用相同的方式。在支持Twain的过程中,我们将学习并调整代码以支持所有不同的实现。
我之前遇到过这种情况,这是我的解决方法:
而不是在代码的开头放置(rc == TWRC_DSEVENT)(之后将跳过以下的MSG_XFERREADY处理),您可以在MSG_XFERREADY处理后将比较移动到结尾,以便始终检查和处理MSG_XFERREADY。
(rc == TWRC_DSEVENT)仅用于确定是否应该转发窗口消息。
答案 2 :(得分:0)
我不知道您的具体情况。我遇到了类似的问题,因为我用来自另一个进程的HWND / wId调用了OpenDSM
。您应该使用HWND致电OpenDSM
当前进程拥有的活动窗口/对话框。