2024年4月28日发(作者:)

VC++ 动态加载BMP(转载)

2010-07-07 15:19 1059人阅读 评论(0) 收藏 举报

前段时间想用VC的对话框来动态地显示一副BMP位图,查了很多篇文章发现都写的

很复杂(而且貌似许多都是复制粘贴而来),真正有价值的不多.其实VC显示BMP文件是很

方便的,所有的代码加在一起也不过五六行而已.因而特此将自己的经验写上blog,希望能对

需要的人有所帮助.

要想在VC中动态显示位图,有两种比较简单的方法:

1.显示已添加为为工程资源的位图

准备工作:把图片加为工程的资源,设其句柄名为IDB_BITMAP1;然后放一个静态

控件或者图片控件到对话框上,将其句柄名设为IDC_SHOWBMP;

具体代码:在需要使用的地方(如按钮函数或OnInitDialog()或OnPaint()里等等)

加入如下代码:

CStatic *p =(CStatic

*)GetDlgItem(IDC_SHOWBMP); //获得指向IDC_SHOWBMP的指针,并将

其强制转换为CStatic*类型,并赋值给p

HBITMAP

hBitmap=::LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(IDB_BITMA

P1));//从工程资源处获得IDB_BITMAP1的位图句柄,并将其赋值给hBitmap变量

p->Modifystyle(0xF,SS_BITMAP|SS_CENTERIMAGE);

//设置该静态控件(p指向的静态控件),使其用于显示位图,并且

是在控件中央显

//(若无此步无法显示,因为没有说明静态对话框要显示的类型是什

么)

p->SetBitmap(hBitmap);

//将需要显示的位图设置为bBitmap,即资源IDB_BITMAP1的

句柄

2.通过位图所在路径显示位图(此方法无需事先将位图文件添加为该工程的资源)

准备工作:在对话框上放一个静态控件(一定是静态控件,若图片控件则无法显示)

将其重命名为IDC_BMP(不重命名的话无法添加变量),然后再为该控件添加一个变量,命名

为m_image.

具体代码:在需要使用的地方(如按钮函数或OnInitDialog()或OnPaint()里等等)

加入如下代码:

this->m_Style(0,SS_BITMAP |

SS_CENTERIMAGE); //和上面的作用一样,将该静

态控件设置为是用来显示位图的,只不过这里是通

//过该静态对话框的变量来进行modifystyle操作的

HBITMAP hBmp = (HBITMAP)::LoadImage(0, "path//",

IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); //从bmp文件所在的路径直接读取该

bmp图象的句柄,并将其转换为HBITMAP类型

//注:其中的"path//"是相对路径,即在和可执行文件的同一

目录

//下有一个名为path的文件夹,里面有一个名为的位图文

件.

this->m_map(hBmp);

//通过变量m_image来设置该静态框所显示的位图文件.

以上两种方法经过试验都可以成功的在对话框上显示一个bmp位图,而且还可以根据

其资源号或者具体路径来进行具体的操作.

好了,暂时就先写到这里了,如有写的不清楚和不对的地方望各位勿吝纠正.