这个其实应该算VS2008的一个bug吧,对于不能识别的资源,添加的时候,VS会弹出一个对话框让你填类型,这个类型其实是字符串表示,而不是像内置类型,是整数。
但是添加PNG图片的时候,它自动识别为PNG,可是实际上VS内部又会把它搞成Bitmap类型,打开RC文件能看见,把BITMAP改成PNG或者任何其他名称,就好了。因为VS不支持PNG图片,包括MS的画图,都不能处理png的透明。所以识别为Bitmap会出错。
当然了,对于png资源,不能用LoadBitmap之类函数加载,而要使用FindResource等资源函数,自己提取二进制字节,类型就是你RC文件里的名称。
VS2008 error RC2170: bitmap file res\xxx.png is not in 3.00 format
编译的时候出现这条错误,打开rc文件发现,
IDR_XXX BITMAP "res\\XXX.png"
把BITMAP修改回PNG后,问题解决。说明:将BITMAP 改为PNG只是相当于告诉编译器这个不是ICO类型的资源是用户自定义资源,如果需要加载资源则需要使用FindResource,去获取资源。