VS2013 MFC添加位图

来源:互联网 发布:何洁的长相 知乎 编辑:程序博客网 时间:2024/05/17 04:29

新建位图的时候位图文件名默认为bitmap1.bmp(需要保存);位图的nIDResource默认为IDB_BITMAP1,是资源ID,是一个UINT型的宏,同时还生成了该宏对应的值,右击IDB_BITMAP1选择资源符号可以查找到对应的值,比如为310。

由CBitmap类提供添加位图操作,该类中只有LoadBitmap()函数的两种重载形式

1、BOOL LoadBitmap( LPCTSTR lpszResourceName );

2、BOOL LoadBitmap(UINT nIDResource);

一、函数使用问题

网上查到两函数的关系:

CBitmap::LoadBitmap的两个原型调用的是同一个API函数:LoadBitmap。这个函数会接受一个32位的量作为位图资源ID。如果这个值的高16位为0,他就被解释为一个整数ID,否则就被理解为一个字符串指针。因此,用作资源ID的整数值不能超过65535(2^16-1)。由于::LoadBitmap声明时将这个32位的量声明为一个字符串指针类型,因此如果要用整数ID,就利用宏MAKEINTRESOURCE将其强制类型转换为字符串指针——但这并不会影响到LoadBitmap内部对这个值的解释。

二、LoadBitmap和LoadBitmapW使用问题

有宏定义#define LoadBitmapLoadBitmapW

因此使用LoadBitmap函数和使用LoadBitmapW函数是一样的,VS中自动弹出的是LoadBitmapW函数

三、参数问题:

用BOOL LoadBitmap(UINT nIDResource)加载位图的时候参数为UINT型的数,可以直接填入310;填入IDB_BITMAP1的话会提示未定义的标识符,但并不影响生成,#define IDB_BITMAP1 310后再填入IDB_BITMAP1就不会有问题了



0 0
原创粉丝点击