WIN api里面的Loadbitmap的用法

convagrant 2008-02-19 08:19:07
上网搜索了很久,没有满意的。 原因是我的用法比较不一样。函数原型
函数原型:HBITMAP LoadBitmap(HINSTANCE hInstance, LPCTSTR lpBitmapName);

我用的是WIN32编程,图象直接加到资源里面了:ID_BITMAP1,如果放到WINPro函数里面很简单:

LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP4)) 就可以了。

但是现在 我新建了一个类叫CPlayFaca, 我要在类的一个成员函数load里面加载图象,怎么做?
第一个参数hInstance 该是多少啊?不能用NULL吧?

特别郁闷的是,我把第一个参数hInstance设置成NULL,这样调用:
LoadBitmap(NULL,MAKEINTRESOURCE(IDB_BITMAP4))
居然编译不过去?提示找不到IDB_BITMAP4,于是我#include "Resource.h"
结果还是编译不过去,提示与stdafx.h有冲突了,怎么办?
...全文
339 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluestn 2008-02-20
  • 打赏
  • 举报
回复
如果你用MFC,那么CWinApp的实例化对象里面可以得到该HINSTANCE的值,因为CWinApp对象在初始化的时候就自动保存在hInstance的值,
但是如果不是用MFC,那就需要你自己在WinMain里面保存一个全局的HINSTANCE。当然,如果你不是写DLL,在LoadBitmap的时候,直接传NULL进去也是可以的,默认就是当前进程(对应你的exe)的实例。但是如果是DLL,就不能传NULL进去,可以通过GetModuleHandle方法获取。但是,个人认为还是在你的程序的入口函数中保存该HISTANCE的值。
至于你所说了使用了NULL,编译出现stdafx.h冲突,请把详细的编译错误信息贴出来。或者加上你的头文件的代码更好。
  • 打赏
  • 举报
回复
lz先解决 stdafx.h的问题吧,这个你网上搜索一下.
你搜到的用法是正确的.
菜牛 2008-02-20
  • 打赏
  • 举报
回复
这个hInstance是程序实例句柄,你可以在WinMain函数中保存成全局变量,或者传递给你的对象使用。
发帖
图形处理/算法

1.9w+

社区成员

VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
帖子事件
创建了帖子
2008-02-19 08:19
社区公告
暂无公告