[英]How to read GetDeviceCaps() return values?
我是Windows API的新手,但我似乎无法弄清楚:
根据文档功能int GetDeviceCaps(HDC hdc,int index);
返回与我要了解的所选项目相对应的整数值。 但是,我应该如何将整数转换为值?
printf("Rastercaps: %d\n", GetDeviceCaps(hdc, RASTERCAPS));
// rastercaps: 32409
项目RASTERCAPS:
值
...
32409是否表示设备按照表中的顺序具有RASTERCAP值(功能)3、2、4、0和9?
谢谢。
它们是位掩码。 在相关的C头文件(wingdi.h)中
/* Raster Capabilities */
#define RC_NONE
#define RC_BITBLT 1 /* Can do standard BLT. */
#define RC_BANDING 2 /* Device requires banding support */
#define RC_SCALING 4 /* Device requires scaling support */
#define RC_BITMAP64 8 /* Device can support >64K bitmap */
...还有很多。
返回值(32409)由按位或这些值组成。 因此,例如,如果您想知道设备是否可以支持> 64K位图,则可以这样做
int rc = GetDeviceCaps(hdc, RASTERCAPS);
if (rc & RC_BITMAP64) { /* it does support >64k */ }
因此,在这种情况下,32409是二进制的0111111010011001,这意味着它具有RC_BITBLT | RC_BITMAP64 | RC_GDI20_OUTPUT | RC_DI_BITMAP | RC_DIBTODEV | RC_BIGFONT | RC_STRETCHBLT | RC_FLOODFILL | RC_STRETCHDIB | RC_OP_DX_OUTPUT。
请参见“ C中的按位运算”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.