吐温总是返回TWRC_NOTDSEVENT

时间:2015-06-03 07:25:25

标签: twain

我在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

可以请别人帮忙吗?

3 个答案:

答案 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 当前进程拥有的活动窗口/对话框。