2011-08-31 46 views
1

我想通过TWAIN界面获取扫描仪支持的文件格式。有一个example如何获得支持格式:如何检查扫描仪支持的图像格式?

GetCapability(ICAP_IMAGEFILEFORMAT, unTest); 
CString strType; 
strType.Format("Type Supported %d\n", unTest); 

但我想有什么错在这里,因为ICAP_IMAGEFILEFORMAT成员不是一个位掩码:

#define TWFF_TIFF  0 /* Tagged Image File Format  */ 
#define TWFF_PICT  1 /* Macintosh PICT    */ 
#define TWFF_BMP   2 /* Windows Bitmap    */ 
#define TWFF_XBM   3 
#define TWFF_JFIF  4 /* JPEG File Interchange Format */ 
#define TWFF_FPX   5 /* Flash Pix     */ 
... 

所以,如果扫描仪支持TIFF,PICT,BMP & JFIF在一次通话中不可能返回这样的信息。

如何获取扫描仪支持的格式列表?

回答

1

我相信你必须查询DS(例如,试着设置你想要的值),看看你想要的格式是否被支持,然后根据结果你可以建立列表或支持的格式。我认为这是作为msgget容器的方式,

TW_ONEVALUE - 当前值和默认值为 一致的单个值。这种类型的 能力的可用值范围就是这个单一值。例如,指示存在文档 馈线的 能力可以是这种类型。

,并从规范的ICAP_IMAGEFILEFORMAT部分的描述似乎表明,你只能够设置一个值,或取回单个值:

应用

使用此ICAP来确定哪些格式可用于文件传输,并设置其他功能协商的上下文,例如ICAP_COMPRESSION。 请务必使用DG_CONTROL/DAT_SETUPFILEXFER/MSG_SET操作来指定要用于特定采集的 格式。

来源

如果不支持,返回TWRC_FAILURE/TWCC_CAPUNSUPPORTED。 如果操作不受支持,则返回TWRC_FAILURE,TWCC_CAPBADOPERATION。 (请参阅 DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT)

无论如何,我可能是错误的解释,但这就是我所看到的。

1

我认为在一次调用中获得所有支持的文件格式是可行的,因为“MSG_GET容器”和“MSG_SET容器”都支持TW_ENUMERATION。

+0

是的,你说得对。为了返回枚举值,我不得不深入GetCapability实现。 –