VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 216|回复: 9

[求助] 对于获取位图资源有些疑问,百思不得其解

[复制链接]
93_avatar_middle
在线会员 发表于 2018-12-27 09:39:58 | 显示全部楼层 |阅读模式
3驿站币
我用CBitmap去接收LoadBitmap获得的位图,发现有值,然后直接给CStatic的方法SetBitmap传入,报错,然后我看到需要传入HBITMAP,我就把这个CBitmap强转HBITMAP,然后就提示我无法计算表达式
HBITMAP hHitmap;
hHitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), "res/tel_up.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
       
CBitmap m_bmp1;
m_bmp1.LoadBitmap(IDB_BITMAP_TEL_UP);

HBITMAP m_bkbmp;
//m_bkbmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(), "res/tel_up.bmp", IMAGE_BITMAP, 0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);
m_bkbmp = (HBITMAP)m_bmp1.GetSafeHandle();

pdlg->m_Static1.SetBitmap(m_bmp1);

hHitmap,m_bkbmp这两个参数全都是无法计算表达式

最佳答案

查看完整内容

链接: https://pan.baidu.com/s/1PxMJPz6mO2O3dMAfZhmIWw 提取码: bnbz 代码肯定是没错的 你得好好看看的的图片名称什么的了。 我把测试程序给你看看




上一篇:WDM驱动主动与应用程序通信
下一篇:C语言文件小问题
75_avatar_middle
在线会员 发表于 2018-12-27 09:39:59 | 显示全部楼层
羽诺蓝 发表于 2018-12-27 14:19
文件路径就在项目根目录的res文件夹中,文件名是直接复制粘贴的,应该不会错,然后是想用代码来实现切换 ...

链接: https://pan.baidu.com/s/1PxMJPz6mO2O3dMAfZhmIWw 提取码: bnbz
代码肯定是没错的  你得好好看看的的图片名称什么的了。
我把测试程序给你看看  

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
51_avatar_small Syc + 2 + 2 赞一个!

查看全部评分

75_avatar_middle
在线会员 发表于 2018-12-27 11:18:40 | 显示全部楼层
3个问题:
1.你的staitc控件有没有把Style设置为Bitmap
2.如果直接使用 pdlg->m_Static1.SetBitmap(hHitmap );  是OK的
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3.如果你要使用m_bmp1的话


HBITMAP m_bkbmp;
//m_bkbmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(), "res/tel_up.bmp", IMAGE_BITMAP, 0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);
m_bkbmp = (HBITMAP)m_bmp1.GetSafeHandle();

pdlg->m_Static1.SetBitmap(m_bmp1);//首先这里写错了  
应该写成  pdlg->m_Static1.SetBitmap((HBITMAP)m_bmp1);  
m_bmp1 必须写成成员变量 才行 不然 析构了 就不显示图片了
93_avatar_middle
ico_lz  楼主| 发表于 2018-12-27 11:25:51 | 显示全部楼层
coldBro 发表于 2018-12-27 11:18
3个问题:
1.你的staitc控件有没有把Style设置为Bitmap
2.如果直接使用 pdlg->m_Static1.SetBitmap(hHitm ...

额,直接放入方法会报错,我尝试过用一个变量去接收(HBITMAP)m_bmp1,提示无法计算表达式
75_avatar_middle
在线会员 发表于 2018-12-27 11:43:08 | 显示全部楼层
羽诺蓝 发表于 2018-12-27 11:25
额,直接放入方法会报错,我尝试过用一个变量去接收(HBITMAP)m_bmp1,提示无法计算表达式

我是说 直接就这三步
HBITMAP hHitmap;
        hHitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), "res/bitmap1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
        m_static1.SetBitmap(hHitmap);

如果要使用变量的话  
CBitmap m_bmp1;必须是成员变量



93_avatar_middle
ico_lz  楼主| 发表于 2018-12-27 12:37:59 | 显示全部楼层
coldBro 发表于 2018-12-27 11:43
我是说 直接就这三步
HBITMAP hHitmap;
        hHitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), "res/ ...

额,直接就这三步,第二部断点的时候参数显示unused = CXX0030: 错误: 无法计算表达式的值,第三步执行完就报读取位置时发生访问冲突~
75_avatar_middle
在线会员 发表于 2018-12-27 13:47:12 | 显示全部楼层
羽诺蓝 发表于 2018-12-27 12:37
额,直接就这三步,第二部断点的时候参数显示unused = CXX0030: 错误: 无法计算表达式的值,第三步执行完 ...

你得看看你的文件路径对不对了 文件名有没有错
75_avatar_middle
在线会员 发表于 2018-12-27 13:48:36 | 显示全部楼层
你要是在程序中 不改这个图的话  其实可以 在控件的cimage选项里 直接加载bitmap
这样都不用写代码
93_avatar_middle
ico_lz  楼主| 发表于 2018-12-27 14:19:12 | 显示全部楼层
coldBro 发表于 2018-12-27 13:47
你得看看你的文件路径对不对了 文件名有没有错

文件路径就在项目根目录的res文件夹中,文件名是直接复制粘贴的,应该不会错,然后是想用代码来实现切换显示图片的功能,控件本身的type是bitmap,然后给他设置了image,需要用代码改变image里的图片~
93_avatar_middle
ico_lz  楼主| 发表于 2018-12-27 15:43:24 | 显示全部楼层
coldBro 发表于 2018-12-27 09:39
链接: https://pan.baidu.com/s/1PxMJPz6mO2O3dMAfZhmIWw 提取码: bnbz
代码肯定是没错的  你得好好看 ...

研究了一下你的代码,找到了我代码里的问题,哈哈,切换成功了,感谢大佬对于获取位图资源有些疑问,百思不得其解
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-1-19 11:08

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表