C++ 如何检查扫描仪支持的图像格式?
我想通过TWAIN接口获得扫描仪支持的文件格式。有一个如何获取支持的格式的示例:C++ 如何检查扫描仪支持的图像格式?,c++,winapi,twain,C++,Winapi,Twain,我想通过TWAIN接口获得扫描仪支持的文件格式。有一个如何获取支持的格式的示例: GetCapability(ICAP_IMAGEFILEFORMAT, unTest); CString strType; strType.Format("Type Supported %d\n", unTest); 但我想这里有点不对劲,因为ICAP_IMAGEFILEFORMAT成员没有一点遮罩: #define TWFF_TIFF 0 /* Tagged Image File Forma
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,则不可能在一次调用中返回此类信息
如何通过扫描仪获取支持的格式列表 我相信您必须查询DS(例如,尝试设置您想要的值)以查看您想要的格式是否受支持,然后根据结果您可以构建列表或受支持的格式。我认为这是msgget容器的方式 TW_ONEVALUE——当前值和默认值为 巧合。此类型的可用值的范围 能力就是这个单一的价值。例如,一个 指示文档存在的功能 给料机可以是这种类型 规范中ICAP_IMAGEFILEFORMAT部分的描述似乎暗示,您只能设置为单个值,或返回单个值: 应用 使用此ICAP确定哪些格式可用于文件传输,并设置文件传输的上下文 其他能力谈判,如ICAP_压缩。 确保使用DG_控制/DAT_设置文件xfer/MSG_设置操作指定 用于特定采集的格式 来源 如果不支持,则返回TWRC\u FAILURE/TWCC\u CAPUNSUPPORTED。 如果不支持该操作,则返回TWRC_FAILURE,TWCC_CAPBADOPERATION。(见 DG_控制/DAT_能力/MSG_查询支持)
不管怎么说,我可能是误译了,但在我看来就是这样 我认为在一次调用中获取所有受支持的文件格式是可行的,因为“Container for MSG_GET”和“Container for MSG_SET”都支持TW_枚举。是的,你是对的。为了返回枚举值,我必须深入研究GetCapability实现。