在VS2008中,创建一个位图文件(IDB_BITMAP.bmp)后,用LoadBit地图(IDB_BITMAP)进行加载,编译报“IDB_BITMAP”: 未声明的标识符。那么怎么声明IDB_BITMAP

在VS2008中,创建一个位图文件(IDB_BITMAP.bmp)后,用LoadBitmap(IDB_BITMAP)进行加载,编译报“IDB_BITMAP”: 未声明的标识符。那么如何声明IDB_BITMAP?
项目->添加新项->选择位图文件(文件名字:IDB_BITMAP.bmp),然后我的代码是这样写的:
// create a bit map
CBitmap bitmap;
// load bitmap
bitmap.LoadBitmap(IDB_BITMAP);
// create bitmap brush
CBrush brush(&bitmap);
// get dc
CClientDC dc(this);
//use bitmap brush fill a rect area
dc.FillRect(CRect(myCPoint,point),&brush);
在编译的时候会报错:
draw2008lesson4_2view.cpp(153) : error C2065: “IDB_BITMAP”: 未声明的标识符

这个错误该怎么解决呢?

------解决方案--------------------
呵呵,bitmap.LoadBitmap(IDB_BITMAP); 
这个参数要么是资源,要么是文件名,如果是文件名,必须要路径正确,而且,还要有扩展名,所以,你应该改成:bitmap.LoadBitmap(“IDB_BITMAP。bmp”); 
或者,就将这个:IDB_BITMAP.bmp文件在资源里面ID设置成IDB_BITMAP!
------解决方案--------------------
IDB_BITMAP.bmp 这个在资源中的名字,LoadBitmap用这个名字
------解决方案--------------------
在资源视图中查看位图资源的ID,默认是IDB_BITMAP1这样的名字。
------解决方案--------------------
原因1:
你这个类最直接的原因是没有包含#include"resource.h",因为这些东西是在这个文件中定义的。
而实际上这个文件头包含在#include"stafx.h"中,一般都会在这里面包含#include"resource.h",
然后调用#include"stafx.h"

原因2:
没有重新rebuild All(全部重新编译)。资源文件的更改,尤其是外部资源的引入后,一般是需要重新编译下。

个人认为原因2最有可能


------解决方案--------------------
文件名和资源ID不是一个东西,你故意混淆了两个名字,都看不懂了。
------解决方案--------------------
要把位图文件导入到工程中去,再设置其资源ID.
------解决方案--------------------
用第1个函数需要在资源上设置使用资源名称,例如把ID改成"IDB_BITMAP1",再把resource.h中的IDB_BITMAP1定义删除,然后就可以LoadBitmap(_T("IDB_BITMAP1"))了。