我是Windows API的新手,但我似乎无法弄清楚:
根据documentation,函数int GetDeviceCaps(HDC hdc,int index);
返回整数值,该值对应于我要了解的所选项目。但是,我应该如何将整数转换为值?
printf("Rastercaps: %d\n", GetDeviceCaps(hdc, RASTERCAPS));
// rastercaps: 32409
项目RASTERCAPS:
值
...
32409表示设备具有表中规定的RASTERCAP值(功能)3、2、4、0和9?
谢谢。
答案 0 :(得分:0)
它们是位掩码。在相关的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。